暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Mysql常用函数助你工作中效率加倍,学习视频等着你

经管之家 2021-02-23
886
工作过程中有没有遇到函数难题?数据库中函数太多了,每个都学习的成本有点高,其实常用的函数就那些,今天整理了常用函数及示例,希望对你有所帮助。

一 字符串函数
CONCAT(str1,str2,...)  #把多个文本字符串合并成一个长字符串()

示例如图



SUBSTRING ( expression, start[,length]) #截取字符串,第三个参数可以省略 表示截取剩余所有字符

示例如图



TRIM(str) #返回删除了两边空格的字符串str

示例如图



REPLACE(str,from_str,to_str) #用字符串to_str替换字符串str中的子串from_str并返回

示例如图



二 日期时间函数
基础函数有DATE(date),YEAR(date),MONTH(date),DAY(date),HOUR(datetime),这里重点介绍日期时间进行加减运算和时间戳

DATE_ADD(date,interval expr type)

示例如图


DATE_SUB(date,interval expr type)

示例如图



TIMESTAMPDIFF(type,expr1,expr2) #返回起始日expr1和结束日expr2之间的时间差整数

示例如图


日期202-01-02至2020-3-22 相差2个月


UNIX_TIMESTAMP([date]) #返回一个unix时间戳(从'1970-01-01 08:00:00'开始的秒数

示例如图



FROM_UNIXTIME(unix_timestamp) #以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的值

示例如图



三 分组合并函数(文本聚合函数)
GROUP_CANCAT([distinct] str [order by str asc/desc] [separator])  #将group by产生的同一个分组中的值连接起来,返回一个字符串结果

示例如图


查询每个部门的员工姓名


四 开窗函数(重点)
Mysql8.0版本才支持开窗函数,也可以叫做数据分析函数, 开窗函数的本质还是聚合运算,只不过它更具灵活性,它对数据的每一行,都使用与该行相关的行进行计算并返回计算结果。

语法如图



开窗函数的一个概念是当前行,当前行属于某个窗口,窗口由over关键字来指定函数执行的窗口范围,
如果后面括号中什么都不写,则意味着窗口包含满足where条件的所有行,开窗函数基于所有行进行计算;如果不为空,则有三个参数来设置窗口:

partition by子句:按照指定字段进行分区,两个分区由边界分隔,开窗函数在不同的分区内分别执行,在跨越分区边界时重新初始化。

order by子句:按照指定字段进行排序,开窗函数将按照排序后的记录顺序进行编号。可以和partition by子句配合使用,也可以单独使用。

frame子句:当前分区的一个子集,用来定义子集的规则,通常用来作为滑动窗口使用。

示例1


有个员工表emp,查询所有员工的平均工资,

select *,avg(sal) over() 所有员工平均工资 from emp;
#当over中没有指定分区、排序和滑动窗口时,将整个表作为一个区,默认计算的是平均工资


示例2


查询各部门平均工资

select *,avg(sal) over(partition by deptno) 部门平均工资 from emp;
 #当over中指定了分区,但是没有指定排序和滑动窗口时,默认计算的是当前分区内的平均工资


示例3


开窗函数滑动窗口求移动平均工资 

#实现效果是 部门分区后 当前行的前一行和后一行求平均工资  (相当于求移动平均工资) 

select *,avg(sal)
over(partition by deptno order by hiredate rows between 1 preceding and 1 following) as 移动平均工资
from emp;


从上述示例中可以看到开窗函数和普通聚合函数的区别:

1.聚合函数是将多条记录聚合为一条;而开窗函数是每条记录都会执行,有几条记录执行完还是几条。

2.聚合函数也可以用于开窗函数中。

实际工作中,还有比较多常用开窗函数,动态窗口函数有first_value(),  last_value(), nth_value()等,其实基本语法都差不多,如果遇到业务需求再网上查找帮助文档让你事半功倍。

如果你想学习更多SQL技能

299元学习视频限时免费领取
(1月29日-1月31日)
赶紧扫码添加客服微信
备注关键词 “SQL”

文章转载自经管之家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论