题解 | 找出每个学校GPA最低的同学
找出每个学校GPA最低的同学
https://www.nowcoder.com/practice/90778f5ab7d64d35a40dc1095ff79065
SELECT device_id, university, gpa FROM user_profile WHERE (university,gpa) IN ( SELECT university, MIN(gpa) FROM user_profile GROUP BY university ) ORDER BY university
很容易可以看出需要使用GROUP BY对university进行分组后,使用MIN()聚合函数计算组内最小gpa。
难点在于怎么在返回的结果中加上device_id列。
步骤分解:
- 子查询:按university分类计算最低gpa,返回两列多行的列表
- 外查询:SELECT子句选择所有需要被返回的列,WHERE子句设定筛选器,满足uni和gpa均与子查询相同。由于子查询返回非单一值,为一个列表,故使用IN关键字。