SQL - Как подсчитать количество подписок в таблице 1 и объединить данные из таблицы 2 - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть 2 таблицы:

ТАБЛИЦА 1 (Подписки)

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

ТАБЛИЦА 2 (описание КУРСА)

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 

Но я получил только курсы с подпиской.

что не так?

1 Ответ

0 голосов
/ 03 сентября 2018

Этот запрос будет делать то, что вы хотите. Он использует условное агрегирование (SUM оператора CASE) для определения количества подписок со статусом 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...