SQL 数据库: 窗口函数
创建Product并插入一些测试数据:
窗口函数
窗口函数也称OLAP函数,可以应用于排序、生成序列号等一般的聚合函数无法实现的高级操作。
窗口函数的语法:
其中,PARTITION BY
非必须的,它在横向上对表进行分组,而ORDER BY
决定了纵向排序的规则。通过PARTITION BY
分组后的记录集合称为窗口。窗口函数大体可以分为以下两种。
能够作为窗口函数的聚合函数(SUM、AVG、COUNT、MAX、MIN)
专用窗口函数
RANK
:计算排序时,如果存在相同位次的记录,则会跳过之后的位次。例如,有3条记录排在第1 位时:1位、1位、1位、4位……DENSERANK
:同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次。例如,有3条记录排在第 1 位时:1位、1位、1位、2位……ROWNUMBER
:赋予唯一的连续位次。例如,有 3 条记录排在第 1 位时:1位、2位、3位、4位……
需要注意的是:窗口函数只能作用于SELECT子句中使用。这是因为
DBMS
内部,窗口函数是对 WHERE
子句或者 GROUP BY
子句处理后的结果进行的操作。
假设,实现根据不同的商品种类,按照销售单价从低到高的顺序创建排序表。
再假设,销售单价从低到高的顺序根据不同的窗口函数创建排序表
移动窗口计算
FOLLOWING
:截止到之后 ~ 行PRECEDING
:截止到之前 ~ 行
参考资料
书籍《SQL基础教程(第2版)》
版权声明: 本文为 InfoQ 作者【大规模数据处理学习者】的原创文章。
原文链接:【http://xie.infoq.cn/article/f93b49a29ec5d04dac506ffa0】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论