专栏首页CDA数据分析师如何轻松地解决Mysql函数难题?学习视频限时免费领!

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

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

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

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

一、字符串函数

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()等,其实基本语法都差不多,如果遇到业务需求再网上查找帮助文档让你事半功倍。

本文分享自微信公众号 - CDA数据分析师(cdacdacda)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 19个超赞的数据科学和机器学习工具,编程小白必看!(附资料)

    编程是数据科学的一个组成部分。事实上,理解编程逻辑、循环和函数的人更有可能成为成功的数据科学家。但那些在学校里从未学习过编程的人怎么办?

    数据派THU
  • 2018年Java程序员的现状,风光背后的危机!

    对于进可攻前端,后可守后端大本营的 Java 程序员而言,虽然供应逐年上涨,但是市场似乎对他们依然青睐有加。这些承担着技术招聘市场中高供给高需求的 Java 程...

    JAVA高级架构开发
  • 零基础小白,如何入门计算机视觉?

    计算机视觉是人工智能技术的一个重要领域,打个比方(不一定恰当),我认为计算机视觉是人工智能时代的眼睛,可见其重要程度。计算机视觉其实是一个很宏大的概念,下图是有...

    用户1150922
  • DB-Engines排行榜更新,.NET Core+MySQL成主流

    上图是DB-Engines数据库流行度最新排行榜,Oracle、MySQL、SQLServer虽几经下滑,然而还是遥遥领先的前三名。后起之秀PostgreSQL...

    寒树Office与RPA
  • 那些工作2年 就月薪2.5W的Java程序员,都有这1个共同点

    精讲java
  • 开发者如何学好 MongoDB

    作为一名研发,数据库是或多或少都会接触到的技术。MongoDB 是火热的 NoSQL 之一,我们怎样才能学好 MongoDB 呢?本篇文章,我们将从以下几方面讨...

    CSDN技术头条
  • 看了B站上的这些Java视频,我飘了!

    处在互联网时代,是一种幸福,因为各式各样的信息非常容易触达,如果掌握了信息筛选的能力,就真的是“运筹帷幄之中,决胜千里之外”。

    Guide哥
  • 腾讯云云数据库 MySQL

    云数据库 MySQL(TencentDB for MySQL)让用户可以轻松在云端部署、使用 MySQL 数据库。通过云数据库 MySQL,您在几分钟内即可部署...

    勤劳的小蜜蜂
  • 开发者如何学好 MongoDB

    NoSQL 泛指非关系型数据库,该词是关系型数据库(即 SQL)的相对称呼。MongoDB 是非关系型数据库中较为人熟知的一种。

    崔庆才

扫码关注云+社区

领取腾讯云代金券