# 这个题用到了窗口函数
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;