# 这个题用到了窗口函数
select device_id,university,gpa
from (select * ,
row_number() over(partition by university order by gpa) as ranking
from user_profile
) as user
where user.ranking=1;
# 窗口函数
# 什么是窗口函数?
# 简而言之是一种用来生在分组中进行分析处理的函数
# 语法结构如下
# <窗口函数>() over (partition by <用于分组的字段> order by <用于排序的字段>)
# <窗口函数>的位置可以放两种函数
# 专用窗口函数rank, dense_rank, row_number 等等
# 聚合函数, 如sum, avg, count, max, min 等等
# 附录:TopN问题的模板
# SELECT *
# FROM (SELECT*,row_number() over (PARTITION BY 姓名 ORDER BY 成绩 DESC) AS ranking
# FROM test1) AS newtest
# WHERE ranking<=N;