赞
踩
MySQL 8.0支持窗口函数(Window Function),也称分析函数。窗口函数与分组聚合函数类似,但是每一行数据都生成一个结果。聚合窗口函数: SUM /AVG / COUNT /MAX/MIN等等。
案例如下:sales表结构与数据如下:
普通的分组、聚合(以国家统计)
- SELECT country,sum(sum)
- FROM sales
- GROUP BY country
- order BY country;
窗口函数(以国家汇总)
- select year,country,product,sum,
- sum(sum) over (PARTITION by country) as country_sum
- from sales
- order by country,year,product,sum;
窗口函数(计算平局值)
- select year,country,product,sum,
- sum(sum) over (PARTITION by country) as country_sum,
- avg(sum) over (PARTITION by country) as country_avg
- from sales
- order by country,year,product,sum;
专用窗口函数:
序号函数:ROW_NUMBER()、RANK()、DENSE_RANK()
分布函数:PERCENT_RANK()、CUME_DIST()
前后函数:LAG()、LEAD()
头尾函数:FIRST_VALUE()、LAST_VALUE()
其它函数:NTH_VALUE()、NTILE()
窗口函数(排名)
用于计算分类排名的排名窗口函数,以及获取指定位置数据的取值窗口函数
- SELECT
- YEAR,
- country,
- product,
- sum,
- row_number() over (ORDER BY sum) AS 'rank',
- rank() over (ORDER BY sum) AS 'rank_1'
- FROM
- sales;
- SELECT
- YEAR,
- country,
- product,
- sum,
- sum(sum) over (PARTITION by country order by sum rows unbounded preceding) as sum_1
- FROM
- sales order by country,sum;
当然可以做的操作很多,具体见官网:
https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。