今日真题
题目介绍: 学生们参加各科测试的次数 students-and-examinations
难度简单
SQL架构
学生表:
代码语言:javascript复制Students
代码语言:javascript复制 --------------- ---------
| Column Name | Type |
--------------- ---------
| student_id | int |
| student_name | varchar |
--------------- ---------
主键为 student_id(学生ID),该表内的每一行都记录有学校一名学生的信息。
科目表:
代码语言:javascript复制Subjects
代码语言:javascript复制 -------------- ---------
| Column Name | Type |
-------------- ---------
| subject_name | varchar |
-------------- ---------
主键为 subject_name(科目名称),每一行记录学校的一门科目名称。
考试表:
代码语言:javascript复制Examinations
代码语言:javascript复制 -------------- ---------
| Column Name | Type |
-------------- ---------
| student_id | int |
| subject_name | varchar |
-------------- ---------
这张表压根没有主键,可能会有重复行。
学生表里的一个学生修读科目表里的每一门科目,而这张考试表的每一行记录就表示学生表里的某个学生参加了一次科目表里某门科目的测试。
代码语言:javascript复制sql
SELECT a.student_id, a.student_name, b.subject_name, COUNT(e.subject_name) AS attended_exams
FROM Students a CROSS JOIN Subjects b
LEFT JOIN Examinations e ON a.student_id = e.student_id AND b.subject_name = e.subject_name
GROUP BY a.student_id, b.subject_name
ORDER BY a.student_id, b.subject_name
CROSS JOIN Mysql中没有full outer join hive中可以用
- 已经有灵感了?在评论区写下你的思路吧!