mysql - SQL - 如何计算表1中的订阅数量并连接表2中的数据

标签 mysql sql left-join inner-join

我有 2 张 table :

表 1(订阅)

ID - NAME - COURSEID - STATUS
1  - JOHN -    1     - 0
2  - MIKE -    1     - 0
3  - JANE -    2     - 0
4  - PAUL -    1     - 1

表 2(类(class)描述)

COURSEID - COURSE - NAME   - UNIT
1        - EXCEL  - BASIC  - XYZ Street
2        - WORD   - MASTER - ABC Street
3        - PPOINT - BASIC  - MNO Street

我需要这个:

结果表:

COURSEID - COURSE - NAME   - UNIT       - TOTAL SUBSCRIPTIONS WITH STATUS = 0
1        - EXCEL  - BASIC  - XYZ Street  -   2
2        - WORD   - MASTER - ABC Street  -   1
3        - PPOINT - BASIC  - MNO Street  -   0 

我尝试左连接:

SELECT TABLE2.COURSEID, TABLE2.COURSE, TABLE2.NAME, TABLE2.UNITY COUNT(*) TOTAL FROM TABLE1 LEFT JOIN TABLE2 ON TABLE1.ID = TABLE2.ID GROUP BY TABLE1.ID 

但我只获得了订阅的类(class)。

出了什么问题?

最佳答案

此查询将执行您想要的操作。它使用条件聚合(CASE 语句的 SUM)来确定状态为 0 的订阅数量。

SELECT c.COURSEID, c.COURSE, c.NAME, c.UNIT, SUM(CASE WHEN s.STATUS = 0 THEN 1 ELSE 0 END) AS Subs_with_0_status
FROM table2 c
LEFT JOIN table1 s ON s.COURSEID = c.COURSEID
GROUP BY c.COURSEID

输出:

COURSEID    COURSE  NAME    UNIT        Subs_with_0_status
1           EXCEL   BASIC   XYZ Street  2
2           WORD    MASTER  ABC Street  1
3           PPOINT  BASIC   MNO Street  0

SQLFiddle Demo

关于mysql - SQL - 如何计算表1中的订阅数量并连接表2中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52142116/

相关文章:

mysql - 如何编写查询来计算具有多个约束和匹配的记录?

java - servlet init 方法无法创建 mysql 表 - 为什么?

MYSQL 查询 LEFT JOIN 和 GROUP BY

r - 在 dpylr 中使用左连接来匹配和填充数据框 R

mysql - 添加一个以当前时间为默认值的新列

mysql - 从所选行中获取值并计算其平均值

mysql - 更新列表列表表中的特定行

mysql - 如何使用断点更新 mysql

mysql - 选择特定时期内的所有可用项目

mysql - 左连接返回所有结果,即使条件不满足