我正在尝试构建一个语句,它将为我提供三列的输出。位置,部分(该地点的部分数量)和学生(该地点的学生人数)。在我的下面的陈述中,我的子查询分别给出正确的计数;但是,当我添加我的顶级选择语句时,我将所有计数显示在学生列下,并且列出了两次位置。
SELECT DISTINCT location, student
FROM(
SELECT location, COUNT(student_id) AS Student
FROM section s INNER JOIN enrollment e
ON s.section_id = e.section_id
GROUP BY location
UNION
SELECT location, COUNT(section_no) AS Sections
FROM section
GROUP BY location
ORDER BY location);
答案 0 :(得分:1)
如果需要三列,则需要在SQL语句中指定它们。最简单的方法可能是COUNT(DISTINCT)
:
SELECT s.location, COUNT(DISTINCT s.section_id) as NumSections,
COUNT(student_id) AS Student
FROM section s INNER JOIN
enrollment e
ON s.section_id = e.section_id
GROUP BY s.location;