类表有class_id
和class_name
列,其ff值为:
class_id | class_Name
1 | Algebra
2 | History
3 | PE
学生表有student_id
和student_name
专栏:
student_id | student_name
1 | Kylo Ren
2 | Rey
第三个表是两个表的联结表,其中包含以下列class_id
和student_id
class_id | student_id
1 | 1
1 | 2
2 | 1
3 | 2
如何找到每个科目注册的学生人数?
输出应该是这样的
Class Name | Number of Students
Algebra | 2
History | 1
PE | 1
然后编辑查询,以便它只显示班级名称和大于2的学生人数
谢谢!
也许我弄错了......
SELECT
c.class_name "Class Name",
count(distinct j.student_id) "Number of Students"
FROM
class c
LEFT JOIN junction j ON j.class_id = c.class_id
GROUP BY
1
按学生汇总联结表,然后断言匹配的学生拥有所有课程:
WITH cte AS (
SELECT student_id
FROM junction
GROUP BY student_id
HAVING COUNT(class_id) = (SELECT COUNT(*) FROM class)
)
SELECF COUNT(*) AS num_all_classes FROM cte;