题目描述
运营团队希望找到每个学校 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 最低的同学。
- 连接条件为

京公网安备 11010502036488号