欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 1280,学生们参加各科测试的次数

1280,学生们参加各科测试的次数

2024/10/22 23:13:14 来源:https://blog.csdn.net/qq_54889094/article/details/143168362  浏览:    关键词:1280,学生们参加各科测试的次数

学生们参加各科测试的次数

分析 + 实现

第一步:让学生表和科目表进行笛卡尔积

students 表

在这里插入图片描述

subjects 表

在这里插入图片描述

-- 学生表和科目表进行笛卡尔积
select*
from students s
cross join subjects sub;

在这里插入图片描述

第二步:使用考试表进行统计,查询每个学生每科测试次数

selectstudent_id,subject_name,count(*) attended_exams
from examinations
group by student_id, subject_name;

在这里插入图片描述

第三步:将第一步的结果和第二步结果进行左连接

select*
from students s
cross join subjects sub
left join (
selectstudent_id,subject_name,count(*) attended_exams
from examinations
group by student_id, subject_name
) grouped
-- 注意这里有两个条件
on s.student_id = grouped.student_id and sub.subject_name = grouped.subject_name;

在这里插入图片描述

第四步:查出想要的数据并进行排序

selects.student_id, s.student_name, sub.subject_name, ifnull(grouped.attended_exams, 0) attended_exams
from students s
cross join subjects sub
left join (
selectstudent_id,subject_name,count(*) attended_exams
from examinations
group by student_id, subject_name
) grouped
on s.student_id = grouped.student_id and sub.subject_name = grouped.subject_name
order by student_id, subject_name;

在这里插入图片描述

在这里插入图片描述

总结

此题用到了我们很少使用的笛卡尔积,同时分组聚合再次用到

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com