前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何轻松地解决Mysql函数难题?学习视频限时免费领!

如何轻松地解决Mysql函数难题?学习视频限时免费领!

作者头像
CDA数据分析师
发布2021-02-08 11:15:20
6590
发布2021-02-08 11:15:20
举报
文章被收录于专栏:CDA数据分析师CDA数据分析师

你在工作过程中,有没有遇到函数难题?

要知道,数据库中函数实在太多了,每个去都学习的话,成本的确有点高。但其实,常用的函数就那些。

今天我们给你整理了常用函数及示例,希望对你有所帮助。

一、字符串函数

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 strasc/desc] [separator]) #将group by产生的同一个分组中的值连接起来,返回一个字符串结果

示例:

查询每个部门的员工姓名

四、开窗函数(重点)

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

语法:

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

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

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

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;

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

  • 聚合函数是将多条记录聚合为一条;而开窗函数是每条记录都会执行,有几条记录执行完还是几条。
  • 聚合函数也可以用于开窗函数中。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CDA数据分析师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档