2021-05-17

每位学生的最高成绩

需求一:查询每位学生获得的最高成绩和它所对应的科目,若科目成绩并列,取 course_id 最小的一门。查询结果需按 student_id 增序进行排序。

展示效果:

student_idaverage_yearsgrade
1299
2295
3382
Create table If Not Exists 48_Enrollments (student_id int, course_id int, grade int);
Truncate table 48_Enrollments;
insert into 48_Enrollments (student_id, course_id, grade) values (2, 2, 95);
insert into 48_Enrollments (student_id, course_id, grade) values (2, 3, 95);
insert into 48_Enrollments (student_id, course_id, grade) values (1, 1, 90);
insert into 48_Enrollments (student_id, course_id, grade) values (1, 2, 99);
insert into 48_Enrollments (student_id, course_id, grade) values (3, 1, 80);
insert into 48_Enrollments (student_id, course_id, grade) values (3, 2, 75);
insert into 48_Enrollments (student_id, course_id, grade) values (3, 3, 82);

最终SQL:

SELECT
	t3.student_id,
	MAX(course_id) average_years,
	MAX(max)
FROM
	(	SELECT
	t1.student_id,
	t2.course_id,
	t1.max
FROM
	(SELECT 
	student_id,
	MAX(grade) max
	from 
	48_Enrollments
	GROUP BY
  student_id
	ORDER BY
	student_id) t1
	left join
	48_Enrollments  t2
on
	t1.max = t2.grade) t3
GROUP BY
	student_id
ORDER BY
	student_id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值