Как вести подсчет случаев по группам? - PullRequest
0 голосов
/ 16 октября 2019

Я только начинаю учить себя SQL (я занимаюсь этим уже неделю и чувствую, что у меня все хорошо) -

У меня есть тренировочная база данных, которую я 'я просто бездельничаю - есть две таблицы (одна с названием "прогресс" и одна с именем "пользователи").

ПрогрессЭта таблица включает в себя внешний ключ от «пользователей», идентифицирующий студентов, обучающихся на 5 различных курсах кодирования (CPP, SQL, HTML, Javascript и Java), и указывает, зарегистрирован ли студент, начал курс или закончил курс.

пользователейЭта таблица содержит первичный ключ для идентификации студентов, а также их демографическую информацию (адреса, адрес электронной почты для университета и т. Д.).

Я хочу иметь возможность подсчитать количество студентов, зачисленных в 5курсы для каждого университета. Я смог сделать это для одного университета за раз, но я хочу что-то, что сделает это для всех 617 различных университетов одновременно.

WITH placeholder AS (
    SELECT *
        FROM users
            JOIN progress
                ON users.user_id = progress.user_id
        GROUP BY email_domain
        ORDER BY email_domain
)
select email_domain,
       Sum(CASE WHEN learn_cpp = "completed" OR learn_cpp = "started" THEN 1 ELSE 0 END) AS 'CPP Enrollment',
       Sum(CASE WHEN learn_sql = "completed" OR learn_SQL = "started" THEN 1 ELSE 0 END) AS 'SQL Enrollment',
       Sum(CASE WHEN learn_html = "completed" OR learn_html = "started" THEN 1 ELSE 0 END) AS 'HTML Enrollment',
       Sum(CASE WHEN learn_javascript = "completed" OR learn_javascript = "started" THEN 1 Else 0 END) AS 'Javascript Enrollment',
       Sum(CASE WHEN learn_java = "completed" OR learn_java = "started" THEN 1 ELSE 0 END) AS 'Java Enrollment'
    FROM placeholder;

Это возвращает правильный счет зачисления во все университеты, но имеет толькопервый университетский почтовый домен (показан ниже).

aa.edu 238 317 183 306 119

Я хочу, чтобы количество зачислений по каждому курсу по университетам (в каждом столбце должно быть 167 строк с количеством зачислений по каждому курсу).

1 Ответ

0 голосов
/ 16 октября 2019

donPablo быстро уловил это в комментариях.

Я переместил свои команды GROUP BY и ORDER BY из команды таблицы соединения в конец моего кода, чтобы он выполнялся после того, как количество заявок былорассчитано.

Это дало результат, который я искал.

Спасибо за ваш быстрый ответ!

...