计算机

窗口函数

专用窗口函数

  • 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

读完了,有什么想法?

阅读已保存的问答示例,并循着引用回到原文。

查看公开问答示例
— 本文完 — 返回文章列表