Выражение COUNT(*)
не будет отличаться в разных столбцах или в разных выражениях CASE
.Это число строк, и оно не изменится, если поместить другие условия вне .
Кроме того, поскольку вы группируете все строки в одинстрока, вы не можете ссылаться на is_cat
или is_dog
, если только эта ссылка не находится внутри агрегатной функции (например, SUM()
или COUNT()
) .
Приведите эти двафакты вместе, и вы можете делать такие вещи, как ...
SUM(CASE WHEN is_dog = 1 THEN 1 ELSE 0 END)
Что дает запрос типа...
SELECT
SUM(CAST WHEN is_dog = 1 THEN 1 ELSE 0 END) AS dogs,
SUM(CAST WHEN is_cat = 1 THEN 1 ELSE 0 END) AS cats
FROM
animals
WHERE
birth_date >= '2018-01-01';
Или, предполагая, что поля is_cat
и is_dog
содержат только 0
или 1
, вам даже не нужно вообще выражение CASE
...
SELECT
SUM(is_dog) AS dogs,
SUM(is_cat) AS cats
FROM
animals
WHERE
birth_date >= '2018-01-01'
;