【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第1张图片

 

前言

MySQL函数

聚合函数

数学函数

字符串函数

日期函数

控制流函数

窗口函数

序号函数

开窗聚合函数- SUM,AVG,MIN,MAX

前后函数 lag lead

首尾函数first_value() last_value()


前言

        MySQL数据库中提供了很丰富的函数,比如我们常用的聚合函数,日期及字符串处理函数等。SELECT语句及其条件表达式都可以使用这些函数,函数可以帮助用户更加方便的处理表中的数据,使MySQL数据库的功能更加强大。本篇文章主要为大家介绍几类常用函数的用法。本期我们将介绍MySQL函数,帮助你更好使用MySQL。


MySQL函数

聚合函数

在MySQL中,聚合函数主要由:count,sum,min,max,avg,这些聚合函数我们之前都学过,不再重复。这里我们学习另外一个函数:group_concat(),该函数用户实现行的合并。

group_concat()函数首先根据group by指定的列进行分组,并且用分隔符分隔,将同一个分组中的值连接起来,返回一个字符串结果。

 

说明:

  • 使用distinct可以排除重复值;   
  • 如果需要对结果中的值进行排序,可以使用orderby子句;   
  • separator是一个字符串值,默认为逗号。 例子 --将所有员工的*名字合并成一行​
--格式
group_concat([distinct]字段名 [orderby 排序字段asc/desc] [separator'分隔符']) 

--默认分隔符合并
select group_concat(emp_name) from emp; 

--指定分隔符合并
select department,group_concat(emp_name separator ';' )
from emp group by department;

数学函数

        数学函数主要用来处理数值数据,主要的数学函数有:绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在有错误产生时,数学函数将会返回空值NULL。

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第2张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第3张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第4张图片

字符串函数

MySQL串常用函数有:

  • LOWER,将参数值转换为全小写字母后返回
  • UPPER,将字符串参数值转换为全大写字母后返回;
  • CONCAT,将多个字符串参数首尾相连后返回;
  • SUBSTR,从源字符串str中指定位置pos开始取

下面列举了MySQL较为全面的字符串函数,大家可以收藏起来,需要时再看即可。

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第5张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第6张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第7张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第8张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第9张图片

日期函数

        日期和时间函数主要用来处理日期和时间值,一般的日期函数除了使用DATE类型的参数外,也可以使用DATESTAMP类型或者TIMESTAMP类型的参数,但是会忽略这些值的时间部分。相同的,以TIME类型值为参数的函数,可以接受TIMESTAMP类型的参数,但是会忽略日期部分。许多日期函数可以同时接收数和字符串这两种参数。

下面列举了MySQL较为全面的字符串函数,大家可以收藏起来,需要时再看即可。

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第10张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第11张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第12张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第13张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第14张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第15张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第16张图片

【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用_第17张图片

控制流函数

1.控制流函数也称作“条件判断函数”,其根据满足的条件不同,执行相应的流程。

2.MySQL 中常见的控制流函数有 IF、IFNULL、case When、case test when(这里主要是case when)

CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
   ...
    WHEN conditionN THEN resultN
    ELSE result
END

/*
解释:
CASE 表示函数开始,END 表示函数结束。
如果 condition1 成立,则返回 result1, 
如果 condition2 成立,则返回 result2,
当全部不成立则返回 result,而当有一个成立之后,
后面的就不执行了。
*/

--例1
select case 100 
           when 50 then 'tom' 
           when 100 then 'mary'else 'tim'
end ;


--例2
select case 
           when 1=2 then 'tom'
           when 2=2 then 'mary' 
           else'tim'
end ;

 

窗口函数

window_function (expr ) OVER ( PARTITION BY ... ORDER BY ... frame_clause )

window_function是窗口函数的名称;

expr是参数,有些函数不需要参数;

OVER子句包含三个选项: 分区(PARTITION BY) PARTITION BY选项用于将数据行拆分成多个分区(组),它的作用类似于GROUPBY分组。如果省略了 PARTITION BY,所有的数据作为一个组进行计算 排序(ORDER BY)

序号函数

row_number()|rank()|dense_rank() over ( partition by ... order by ... )
OVER 子句中的ORDERBY选项用于指定 分区内的排序方式,与 ORDER BY 子句的作用类似 以及窗口大小(frame_clause)。 frame_clause选项用于在 当前分区内指定一个计算窗口,也就是一个与当前行相关的数据子集。

开窗聚合函数- SUM,AVG,MIN,MAX

sum(salary) over(partition by dname order by hiredate) as pv1

前后函数 lag lead

用途:返回位于当前行的前n行(LAG(expr,n))或后n行(LEAD(expr,n))的expr的值

lag(hiredate,1,'2000-01-01') over
(partition by dname order by hiredate) as last_1_time, 

lag(hiredate,2) over(partition by dname order by hiredate) 
as last_2_time

lead(hiredate,1,'2000-01-01') over
(partition by dname order by hiredate) aslast_1_time,

lead(hiredate,2) over(partition by dname order by hiredate)
as last_2_time

首尾函数first_value() last_value()

用途:返回第一个(FIRST_VALUE(expr))或最后一个(LAST_VALUE(expr))expr的值

应用场景:截止到当前,按照日期排序查询第1个入职和最后1个入职员工的薪资

 

 

你可能感兴趣的:(Data,mysql,数据库,sql,学习)