【问题标题】:How to use multiple COUNT statements in SQL sharing the same GROUP BY?如何在 SQL 中使用多个 COUNT 语句共享同一个 GROUP BY?
【发布时间】:2017-08-15 09:34:52
【问题描述】:

我有以下语句输出正确的数据

 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;

部门和学生现在共享相同的数据。如何将这些语句组合在一起?

【问题讨论】:

    标签: sql join count


    【解决方案1】:

    首先,不要在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

    【讨论】:

    • 正确,是 student_ID。非常感谢,完美解决了。
    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2012-10-20
    相关资源
    最近更新 更多