窗口函数
什么是窗口函数?
语法结构如下
<窗口函数>() over (partition by <用于分组的字段> order by <用于排序的字段>)
<窗口函数>的位置可以放两种函数
1 专用窗口函数rank, dense_rank, row_number 等等
2 聚合函数, 如sum, avg, count, max, min 等等
注意
- 窗口函数是对where或者group by子句处理后的结果进行操作,窗口函数要写在select子句中
rank, dense_rank, row_number 功能都是得出排序序数,但是他们在处理名次并列时有所区别
- rank 在数据出现名次并列时,会把按最小排名并列,比如三个第1,排名都是1,但是第二会跳序数显示为第4,因为总数为4嘛。
- danse_ranke 在出现并列排名时则不会跳数字,即时有100个并列第一,到第101个非并列会显示为2。
- row_number 不做并列处理,按照总数据量,直接排序,不进行并列。
- 如果还是觉得不清楚麻烦看看看知乎大佬的文章吧
- 通俗易懂的学会:SQL窗口函数 - 猴子的文章 - 知乎
https://zhuanlan.zhihu.com/p/92654574
SELECT device_id, university,gpa FROM
(SELECT device_id, university,gpa,
RANK() over (PARTITION BY university ORDER BY gpa) as rk FROM user_profile) as a
WHERE a.rk=1;