当前位置:   article > 正文

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

firset value 聚合函数

b8f0003533f34b9c922603d2bbe56bc1.jpeg

 

前言

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是一个字符串值,默认为逗号。 例子 --将所有员工的*名字合并成一行​
  1. --格式
  2. group_concat([distinct]字段名 [orderby 排序字段asc/desc] [separator'分隔符'])
  3. --默认分隔符合并
  4. select group_concat(emp_name) from emp;
  5. --指定分隔符合并
  6. select department,group_concat(emp_name separator ';' )
  7. from emp group by department;

数学函数

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

c6abb17968b9c321632139202e2ccf42.jpeg

a1b1631616f2ff7fe99d1c48e34984bb.jpeg

b66221f6f13325a06f1e6315f1c2d6e5.jpeg

字符串函数

MySQL串常用函数有:

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

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

958547bfd909b4925e09b5f78dae2547.jpeg

c46dbba4dc8c78b0306eaf0f164a6a8b.jpeg

d6eaaa5efc1ed0a0fa942a19214bb5cf.jpeg

25dcf642c21cde0a734df4d357ce9842.jpeg

81961fa23b91a21e30ae766654e5cbb1.jpeg

日期函数

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

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

f4e44036f95b78a8f128fc8bc9962a78.jpeg

64fa8241186373eafeec86ffa929e8f2.jpeg

2ce62a77f7898bb812632a156e868cbd.jpeg

d26fa0aa7c5954060650d44d86a6f530.jpeg

0607388837df86900d89ec05d4c3eba6.jpeg

4c10f586efe6e2080a0f4b09f8745d73.jpeg

d01b6b4ac2c3c3235b698b5b045ba63f.jpeg

f4138823d20fa6b2c62f25d15548d3e6.jpeg

控制流函数

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

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

  1. CASE expression
  2. WHEN condition1 THEN result1
  3. WHEN condition2 THEN result2
  4. ...
  5. WHEN conditionN THEN resultN
  6. ELSE result
  7. END
  8. /*
  9. 解释:
  10. CASE 表示函数开始,END 表示函数结束。
  11. 如果 condition1 成立,则返回 result1,
  12. 如果 condition2 成立,则返回 result2,
  13. 当全部不成立则返回 result,而当有一个成立之后,
  14. 后面的就不执行了。
  15. */
  16. --例1
  17. select case 100
  18. when 50 then 'tom'
  19. when 100 then 'mary'else 'tim'
  20. end ;
  21. --例2
  22. select case
  23. when 1=2 then 'tom'
  24. when 2=2 then 'mary'
  25. else'tim'
  26. 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的值

  1. lag(hiredate,1,'2000-01-01') over
  2. (partition by dname order by hiredate) as last_1_time,
  3. lag(hiredate,2) over(partition by dname order by hiredate)
  4. as last_2_time
  5. lead(hiredate,1,'2000-01-01') over
  6. (partition by dname order by hiredate) aslast_1_time,
  7. lead(hiredate,2) over(partition by dname order by hiredate)
  8. as last_2_time

首尾函数first_value() last_value()

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

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

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/441344
推荐阅读
相关标签
  

闽ICP备14008679号