一、窗口函数
窗口函数是SQL中一个功能很强大的函数,可对查询结果进行分组、排序和聚合操作,同时保留原始表中的行结构。
窗口函数:over([partition by 字段名] [order by 字段名 asc|desc])
使用语法:
SELECT column1, column2, ..., aggregate_function(column) OVER (PARTITION BY column1, column2, ... ORDER BY column3) FROM table_name
示例:
select a,b,
rank()over(partition by c order by d)rk
from t
over()中两个子句为可选项,partition by指定分区依据,order by指定排序依据
二、排序窗口函数
排序窗口函数是利用窗口函数来进行排序的函数,常用排序窗口函数如下:
1.rank()over()
说明:根据指定的排序规则,为结果集中的每一行分配一个排序值,相同的值会得到相同的排名,相同排名后面有跳跃。
示例:
排序前 name grade a 100 b 90 c 90 d 80 e 70
rank()over()排序后 name grade rk a 100 1 b 90 2 c 90 2 d 80 4 e 70 5
2.dense_rank()over()
说明:根据指定的排序规则,为结果集中的每一行分配一个排序值,相同的值会得到相同的排名,相同排名后面不会跳跃。
示例:
排序前 name grade a 100 b 90 c 90 d 80 e 70
dense_rank()over()排序后 name grade rk a 100 1 b 90 2 c 90 2 d 80 3 e 70 4
3.row_number()over()
说明:根据指定的排序规则,为结果集中的每一行分配一个唯一的排序值。
示例:
排序前 name grade a 100 b 90 c 90 d 80 e 70
row_number()over()排序后 name grade rk a 100 1 b 90 2 c 90 3 d 80 4 e 70 5
希望这篇文章对你有帮助!
祝每天顺利!