题目描述
运营团队希望找到每个学校 GPA 最低的同学来做调研。请从 user_profile
表中取出每个学校最低的 GPA 及对应的 device_id
。输出结果需按照 university
升序排序。
解题思路
- 找到每个学校 GPA 最低的同学,并获取其
device_id
、university
和gpa
。结果按university
升序排序 - 通过
JOIN
操作用device_id
关联主表,筛选出 GPA 为最低值的记录。 3.如果某个学校有多个同学 GPA 相同且均为最低值,则将所有符合条件的同学都列出。 - 按照
university
名称进行升序排序,以满足输出要求。
SQL 查询
SELECT
up.device_id,
up.university,
up.gpa
FROM
user_profile up
JOIN
(SELECT
university,
MIN(gpa) AS min_gpa
FROM
user_profile
GROUP BY
university
) AS sub
ON
up.university = sub.university
AND up.gpa = sub.min_gpa
ORDER BY
up.university ASC;
代码解释
-
子查询
sub
:SELECT university, MIN(gpa) AS min_gpa FROM user_profile GROUP BY university
:- 按照
university
分组,计算每个学校的最低 GPA。 - 结果包含每个学校的名称及其对应的最低 GPA。
- 按照
-
主查询:
JOIN
操作将主表user_profile
与子查询结果sub
连接:- 连接条件为
university
相同且gpa
等于该学校的最低 GPA。 - 这样即可筛选出每个学校 GPA 最低的同学。
- 连接条件为