什么是聚合函数?
聚合(或者聚集,分组)函数,它是对一组数据进行汇总的函数,输出的是一组数据的集合,输出的是单个值
聚合函数作用于一组数据,并对有一组数据返回一个值
聚合函数的类型:
·avg() //表示求函数的平均值
·sum() //求和
·max() //最大值
·mix() //最小值
·count() //统计个数
生成序号函数:
·rank() over()
·row_number over()
·dense_rank() over()
取值函数:
·lag() over()
·lead() over()
·over()指定窗口的关键字,默认窗口范围是全表,需要配合其他计算函数一起使用。
·over()中除了可以指定窗口,还可以指定窗口函数内的排序规则,一般配合生成序号函数一起使用。
聚合函数:
聚合函数语法:
select 字段,avg()/sum()/max() over() from 表
例子:
求年龄的平均值,
生成序号函数:
对表中的字段按照指定顺序记性排序然后生成序号
需要借助窗口函数实现
rank() over(order by 排序字段)
dense_rank() over(order by 排序字段)
row_number() over(order by 排序字段)
取值函数
基本用法
-
lead(字段) over() //根据指定的字段向下一行取值
-
lag(字段) over() //根据指定的字段向上一行取值
-
first_value(字段) over() //根据指定的字段取第一行值
-
last_value(字段) over() // 根据指定的字段取最后一行值
select *, lead(ename) over () as lead_data, lag(ename) over() as lag_data, first_value(ename) over () as first, last_value(ename) over () as last from employee;
指定取值范围,默认取值范围是全表
over(rows between ... and ... )
rows 指定行范围的关键字 between ...起始行 and ... 结束行 是以当前行为基准进行判断 unbounded preceding 向上无限制,以当前行为基准,向上找数据没有行数限制 2 preceding 向上两行 current row 代表当前行 以当前行为基准,向下查找数据到当前行结束 2 following 向下两行 以当前行为基准,向下查找两行数据 unbounded following 向下无限制
注意:
聚合函数只有在MySQL8.0以上的版本中方可使用。