题解 | 找出每个学校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关键字。

查看10道真题和解析