【DA】-【SQL】-【窗口函数学习】

    科技2022-07-13  114

    0.概述

    参考:通俗易懂学会SQL窗口函数;窗口函数的作用、语法、示例。

    1.SQL窗口函数作用?

    面向各组内排序的业务需求,例如每个部门按业绩排名、每个部门排名Top N的员工等。

    2.SQL窗口函数定义?

    窗口函数又叫OLAP函数(Online Analytical Processing,联机分析处理),虽然不太清楚为什么,但是它的作用是能够实时处理数据库当中的数据。

    3.SQL窗口函数的语法?

    <窗口函数> over (partition by <用于分组的列> order by <用于排序的列>)。

    以第1部分的栗子“每个部门按业绩排名”为例,<用于分组的列>则是部门,<用于排序的列>则是业绩。<窗口函数>分为两种:一般聚合函数和专用窗口函数。聚合函数:sum(), avg(), count(), max(), min();专用函数:rank(), dense_rank(), row_number(), ntile()。 (1)row_number()对于每条记录都给出一个排序序号,如123; (2)rank()函数对排序列值相同的记录给出相同的排序序号,如122; (3)dense_rank()和rank()类似,都会给值相同的记录以相同序号,但是区别于rank()的连续分配1,2,2,3,3,3;dense_rank()给出的结果会是1,2,2,4,4,4跳跃序号结果。 (4)举个栗子: 百米赛跑成绩为张三10.00秒,李四10.00秒,王二麻子10.01。 那么按照row_number()排序序号是-张,李,王:123; rank()排序序号是-张,李,王:112; dense()排序序号是-张,李,王:113. 按照row_number()冠亚季军各有归属;按照rank()有两位并列冠军,一位亚军; 按照dense_rank()也是两位并列冠军,没有亚军(瞎说一下举个例子而已),只有季军。 (5)ntile()函数则是将数据分区, 比如ntile(1),那么-张,李,王:111;ntile(2),那么-张,李,王:112; ntile(3),那么-张,李,王:123

    备注:窗口函数原则上智只能写在select子句当中。

    4.SQL窗口函数的应用?

    可参考:通俗易懂的学会:SQL窗口函数。待补充。
    Processed: 0.013, SQL: 8