题解 | #找出每个学校GPA最低的同学#
找出每个学校GPA最低的同学
https://www.nowcoder.com/practice/90778f5ab7d64d35a40dc1095ff79065
-- join法
select
b.device_id,a.university,a.min_gpa
from (SELECT university,min(gpa) min_gpa from user_profile group by university) a
left join user_profile b on a.university=b.university and a.min_gpa = b.gpa order by university;
-- in法
select device_id,university,gpa
from user_profile
where (university,gpa) in (SELECT university,min(gpa) min_gpa from user_profile group by university) order by university;
-- 开窗大法
SELECT device_id, university, min_gpa
FROM (
SELECT device_id, university, gpa,
MIN(gpa) OVER (PARTITION BY university ORDER BY university) AS min_gpa
FROM user_profile
) AS subquery
WHERE gpa = min_gpa;
join最慢,in和开窗差不多
查看11道真题和解析