В вашем запросе отсутствует предложение from
, но я предполагаю, что это опечатка.
Обратите внимание:
select
accountId,
sum(eventType = 'start') as starts,
sum(eventType = 'stop') as stops
from ???
GROUP BY accountId
Обоснование: count()
учитывает все значения, которые не являются null
. С другой стороны, если | eventType
не равно null
, условие внутри count()
возвращает логическое значение или значение 0/1
- в зависимости от вашей базы данных. Вам нужно sum()
эти 0/1
значения.
Обратите внимание, что приведенный выше синтаксис поддерживается только в MySQL. Если вы используете Postgres (это другая база данных, в которой будет выполняться ваш исходный код), в этом нет необходимости, вместо этого можно использовать предложение filer
:
select
accountId,
count(*) filter(where eventType = 'start') as starts,
count(*) filter(where eventType = 'stop') as stops
from ???
GROUP BY accountId