Условный случай при выборе снежинки SQL - PullRequest
0 голосов
/ 20 марта 2020

застрял на снежинке условного выбора sql. Я пытаюсь посчитать идентификаторы, когда они имеют соответствующее категориальное значение. Буду признателен за помощь.

Спасибо

SELECT 
YEAR(DATETIME) AS YEAR, 
WEEKOVERYEAR(DATETIME) AS WEEK,
COUNT(CASE WHEN ID THEN CATEGORY = 'A')
from table 
group by week, year;

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Вот один из методов:

SELECT YEAR(DATETIME) AS YEAR, 
       WEEKOVERYEAR(DATETIME) AS WEEK,
       SUM(CASE WHEN CATEGORY = 'A' THEN 1 ELSE 0 END) as num_a
FROM table 
GROUP BY week, year;
0 голосов
/ 21 марта 2020

COUNT () подсчитывает количество строк, которые не равны нулю. Если вы хотите, чтобы ID не был нулевым И КАТЕГОРИЯ = 'A', то

COUNT(CASE WHEN ID IS NOT NULL AND CATEGORY = 'A' THEN TRUE ELSE NULL END)

даст вам это, или вы можете использовать СУММУ, как в ответе Гордона

SUM(CASE WHEN ID IS NOT NULL AND CATEGORY = 'A' THEN 1 ELSE 0 END)

или Вы можете использовать снежинку IFF как более короткую форму для того же самого, как я это делаю

SUM( IFF( ID IS NOT NULL AND CATEGORY = 'A', 1, 0))
...