我有以下语句输出正确的数据
SELECT COUNT (Section_ID) AS Sections
FROM Section
GROUP BY Location;
并且此语句也输出正确的数据
SELECT COUNT (e.Section_ID) AS Students
FROM Section s, Enrollment e
WHERE s.Section_ID = e.Section_ID
GROUP BY Location;
但是,当我像这样将这些陈述放在一起时
SELECT Location, COUNT(s.Section_ID) AS Sections, COUNT (e.Section_ID) AS Students
FROM Section s, Enrollment e
WHERE s.Section_ID = e.Section_ID
GROUP BY Location;
分区和学生现在共享相同的数据。如何将这些语句组合在一起?
首先,切勿在FROM
子句中使用逗号。 始终使用正确、明确的JOIN
语法。
其次,记住COUNT()
做什么。 它计算非NULL
值的数量。
做你想做的事的一种方法是使用 COUNT(DISTINCT)
:
SELECT Location, COUNT(DISTINCT s.Section_ID) AS Sections,
COUNT(DIStINCT e.Student_Id) AS Students
FROM Section s JOIN
Enrollment e
ON s.Section_ID = e.Section_ID
GROUP BY Location;
我必须猜测Enrollment
的主键是什么. 我猜Student_ID
.