mysql窗口函數(shù)(mysql版本8 ):
1.涉及到排名問題念颈,可以使用窗口函數(shù)
2.專用窗口函數(shù)rank, dense_rank, row_number有什么區(qū)別呢?
它們的區(qū)別我舉個(gè)例子,你們一下就能看懂:
select *,
? rank() over (order by 成績 desc) as ranking,
? dense_rank() over (order by 成績 desc) as dese_rank,
? row_number() over (order by 成績 desc) as row_num
from 班級(jí)
結(jié)果:
1)rank函數(shù):如果有并列名次的行,會(huì)占用下一名次的位置。
2)dense_rank函數(shù):如果有并列名次的行谬擦,不占用下一名次的位置。
3)row_number函數(shù):不考慮并列名次的情況朽缎。
其他:
對于“累計(jì)”問題怯屉,要想到用聚合函數(shù)作為窗口函數(shù)。比如累計(jì)求和饵沧,用sum。
sum(列名) over (partition by<用于分組的列名>order by<用于排序的列名>)
累計(jì)求平均值赌躺,用avg狼牺。
avg(列名) over (partition by<用于分組的列名>order by<用于排序的列名>)
可用聚合函數(shù)最為窗口函數(shù):
select 雇員編號(hào),薪水,sum(薪水) over(order by 雇員編號(hào)) as累計(jì)薪水
from薪水表
總結(jié):
select 列1,列2,sum(列2) over (order by 列1) as 累計(jì)值