SQL Query查找在主题中注册的学生总数

问题描述 投票:1回答:2

类表有class_idclass_name列,其ff值为:

class_id | class_Name
1        | Algebra
2        | History
3        | PE

学生表有student_idstudent_name专栏:

student_id | student_name
1          | Kylo Ren
2          | Rey

第三个表是两个表的联结表,其中包含以下列class_idstudent_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的学生人数

谢谢!

sql database postgresql
2个回答
1
投票

也许我弄错了......

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

2
投票

按学生汇总联结表,然后断言匹配的学生拥有所有课程:

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;
© www.soinside.com 2019 - 2024. All rights reserved.