窗口函数
专用窗口函数
ROW_NUMBER:直接添加行号RANK:排名,重复值会保持同个数字DENSE_RANK:排名,重复值会保持同个数字,并且不会空缺
基本用法:
SELECT score, RANK() OVER (ORDER BY score DESC) FROM ExamResult;
聚合函数
聚合函数也可以配合窗口函数使用
窗口的使用
PARTITION BY
用于划分组数。与 GROUP BY 不同,PARTITION BY 不会去重。
例如,筛选出所有
ORDER BY
用于指定排序
默认来说,使用 ORDER BY 会同时改变窗口的大小,聚合函数将只能看到排序后小于等于当前指定值的行,即
SELECT COUNT(*) OVER (ORDER BY score)
FROM ExamScore;
和下面的语句等价
SELECT COUNT(*) OVER (
ORDER BY score
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT_ROW
)
FROM ExamScore;
BEYOND THE ARTICLE
读完了,有什么想法?
阅读已保存的问答示例,并循着引用回到原文。
— 本文完 — 返回文章列表