题解 | #找出每个学校GPA最低的同学#

找出每个学校GPA最低的同学

https://www.nowcoder.com/practice/90778f5ab7d64d35a40dc1095ff79065

SELECT a.device_id, a.university, a.gpa
FROM user_profile a
JOIN (
    SELECT university, MIN(gpa) gpa
    FROM user_profile
    GROUP BY university
) b
ON a.university = b.university and a.gpa = b.gpa
ORDER BY university
/*SELECT device_id,
       university,
       gpa
FROM (
    SELECT *,
           ROW_NUMBER() OVER(PARTITION BY university ORDER BY gpa) AS rk
    FROM user_profile
) a
WHERE a.rk=1
*/

有两种解法:连接表和窗口函数。

不能直接按照学校分组,然后min(gpa),因为这样得不到相应的device_id。

方法二先用窗口函数,按照学校分组并对组内进行排序,可以得到多了一列排名的表。然后再从这个表中检索相应的字段。

全部评论

相关推荐

活泼的代码渣渣在泡池...:哈哈哈挺好的,我也上岸美团了,不说了,我又接了一单
点赞 评论 收藏
分享
面了100年面试不知...:被割穿了才想起来捞人了
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务