首页 > 试题广场 >

找出每个学校GPA最低的同学

[编程题]找出每个学校GPA最低的同学
  • 热度指数:438784 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
题目:现在运营想要找到每个学校gpa最低的同学来做调研,请你取出每个学校的最低gpa。

示例:user_profile
id device_id gender age university gpa active_days_within_30
question_cnt
answer_cnt
1 2138 male 21 北京大学 3.4 7 2 12
2 3214 male 复旦大学 4 15 5 25
3 6543 female 20 北京大学 3.2 12 3 30
4 2315 female 23 浙江大学 3.6 5 1 2
5 5432 male 25 山东大学 3.8 20 15 70
6 2131 male 28 山东大学 3.3 15 7 13
7 4321 female 26 复旦大学 3.6 9 6 52
根据示例,你的查询结果应参考以下格式,输出结果按university升序排序:
device_id
university
gpa
6543
北京大学
3.2
4321 复旦大学 3.6
2131 山东大学
3.3
2315 浙江大学
3.6

示例1

输入

drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`gpa` float,
`active_days_within_30` int ,
`question_cnt` int ,
`answer_cnt` int 
);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学',3.4,7,2,12);
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学',4.0,15,5,25);
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学',3.2,12,3,30);
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学',3.6,5,1,2);
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学',3.8,20,15,70);
INSERT INTO user_profile VALUES(6,2131,'male',28,'山东大学',3.3,15,7,13);
INSERT INTO user_profile VALUES(7,4321,'male',28,'复旦大学',3.6,9,6,52);

输出

device_id|university|gpa
6543|北京大学|3.2
4321|复旦大学|3.6
2131|山东大学|3.3
2315|浙江大学|3.6
头像 牛客题解官
发表于 2025-02-17 12:18:35
精华题解 题目描述 运营团队希望找到每个学校 GPA 最低的同学来做调研。请从 user_profile 表中取出每个学校最低的 GPA 及对应的 device_id。输出结果需按照 university 升序排序。 解题思路 找到每个学校 GPA 最低的同学,并获取其 device_id、universi 展开全文
头像 无上清颜
发表于 2021-12-07 10:45:54
select device_id,university,gpa from user_profile where (university,gpa) in (select university,min(gpa) from user_profile group by university) order b 展开全文
头像 webary
发表于 2021-09-02 19:57:50
题意明确: 每个学校里gpa最低的同学 问题分解: 限定条件:gpa最低,看似min(gpa),但是要留意,是每个学校里的最低,不是全局最低。min(gpa)的时候对应同学的ID丢了,直接干是拿不到最低gpa对应的同学ID的; 每个学校最低: 第一种方式是用group by把学校分组,然后计算得 展开全文
头像 细雨噜噜噜
发表于 2021-09-19 16:02:09
SELECT device_id,university,min(gpa) FROM user_profile GROUP BY university; 因为学校与学生是一对多的关系,如果仅用min求出gpa最低的学生,查询结果中的id与学生不一定是对应的关系,因此此方法错误。 (1)方法一:将表a的 展开全文
头像 宋子木
发表于 2021-09-24 10:46:30
注意按学校升序(默认)排序 -- 子查询 SELECT a.device_id ,a.university ,a.gpa from user_profile a where gpa in ( select min(b.gpa) 展开全文
头像 DraonAbyss
发表于 2021-10-08 14:54:46
知识 窗口函数语法 <窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>) <窗口函数>的位置,可以放以下两种函数: 专用窗口函数,比如rank, dense_ 展开全文
头像 酸菜鱼土豆大侠
发表于 2022-10-30 12:30:17
【场景】:每个--最低(高)-- 【分类】:窗口函数、分组函数、表连接 分析思路 难点: 1.如何取出使用分组函数之后得不到的device_id?连接其他表或者使用排序函数 (1)统计每个学校的最低gpa [使用]:min (2)取出每个学校gpa最低的同学的device_id [使用]: 展开全文
头像 tian二二
发表于 2021-09-14 15:27:32
+ 因为学校与学生是一对多的关系,如果仅用min求出gpa最低的学生,查询结果中的id与学生不一定是对应的关系,因此此方法错误,排除 +  此类问题是排序查询问题,可考虑窗口函数,因为是排名最低,即升序**asc**第一,因此使用row_number\rank\dense_rank都 展开全文
头像 JezeChou
发表于 2021-10-26 09:19:42
此题主要考察开窗函数。 首先,根据gpa进行开窗排序 select device_id, university, gpa, row_number() over(partition by university order by gpa) as ranking fr 展开全文
头像 玉树叶
发表于 2021-11-12 20:31:35
第一次知道这个居然是函数问题,min(gpa)可能会丢掉相应学号,我确实又get到新知识,没办法那就自联结吧,先查出每个学校最低gpa然后找到他的对用学号,谁让咱还没看窗口函数呢 SELECT u.device_id, u.university, u.gpa FROM 展开全文
头像 牛客445411361号
发表于 2023-01-30 11:36:18
SELECT device_id, university, gpa FROM user_profile WHERE ( university, gpa ) IN ( SELECT university, min( gpa ) FROM user_profile GROUP BY uni 展开全文