时间:2024-07-27 11:00:52
mysql开窗函数
MySQL的开窗函数主要用于解决既要显示聚集前的数据,又要显示聚集后的数据的问题。它对一组值进行操作,不需要group by子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。开窗函数在MySQL 8.0后才有。
开窗函数的语法为:函数名(列) over(选项【选项可以为 partition by 列 order by 列】)。其中,over(partition by xxx)表示按照xxx所有行进行分组,over(partition by xxx order by aaa)表示按照xxx分组,按照aaa排序。
开窗函数可以分为两类:
1. 聚合开窗函数:如果函数名是聚合函数,如sum(), count(), max(), min()等,则称为聚合开窗函数。例如,计算每个学生的及格数,可以使用开窗函数在表的最后一列添加及格数。
2. 排序开窗函数:包括row_number(行号)生成连续的序号,不考虑分数相同;rank(排名)相同分数的排名一样,后面排名为真正的序号,排名存在跳跃性;dense_rank(密集排序)相同分数的排名一样,是连续的排名;ntile(分组排名)将总记录划分为6桶,排名就是1, 1, 2, 3, 3, 4, 5, 5。
《MySQL 窗口函数》不代表本网站观点,如有侵权请联系我们删除
精彩推荐