Как «посчитать» два разных критерия из одного столбца таблицы?

Я пытаюсь написать простой запрос, который группируется по дням, заполняет один столбец количеством «действительных» и «действующих» точек в этот день, а другой столбец - количеством всех «действительных» точек. Таким образом, столбцы результатов будут такими: «День», «RunNum», «TotalNum». Он считывается из таблицы со столбцами «TheDate», «Running» и «ValidPoint».

Я могу создать столбцы «RunNum» и «TotalNum» по отдельности, изменив оператор «FROM» в соответствии с конкретными критериями столбца. Тем не менее, я новичок в SQL, и мне нужно руководство о том, как читать два разных критерия из одной таблицы.

Вот что я написал для создания RunNum:

SELECT TheDate AS Day, count(Running) AS RunNum
FROM Source_Table
WHERE Running = "Runtime" AND ValidPoint = "yes"
GROUP BY TheDate;

И это для создания TotalNum:

SELECT TheDate AS Day, count(Running) AS TotalNum
FROM Source_Table
WHERE ValidPoint = "yes"
GROUP BY TheDate;

Я попытался использовать метод SUM(CASE WHEN...), описанный в эта почта, но он продолжал выдавать сообщение об ошибке синтаксиса, когда я пытался его запустить:

SELECT TheDate As Day, SUM(CASE WHEN Running = "Runtime" THEN 1 ELSE 0 END) AS RunNum, COUNT(Running) AS TotalNum
FROM Source_Table
WHERE ValidPoint = "yes"
GROUP BY TheDate;

Я подозреваю, что мне нужно будет использовать «псевдонимы» таблицы в операторе from, но все, что я читал о них до сих пор, сбивало с толку. Будем очень признательны за любую помощь или руководство в правильном направлении для дальнейших исследований. Спасибо, что нашли время, чтобы прочитать это!

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В MS Access условная агрегация использует IIF() вместо CASE:

SELECT TheDate As Day,
       SUM(IIF(Running = "Runtime", 1, 0)) AS RunNum,
       COUNT(*) AS TotalNum
FROM Source_Table
WHERE ValidPoint = "yes"
GROUP BY TheDate;

Другие вопросы по теме