У меня есть этот запрос, который выбирает количество каждого «messagecode» на основе определенного интервала времени.Построить postgresql-запрос на основе нескольких условий
SELECT coalesce(count(case when messagecode = 'F-100' then 'F-100' end), 0) as fixed,
coalesce(count(case when messagecode = 'H-100' then 'H-100' end), 0) as hope,
coalesce(count(case when messagecode = 'G-100' then 'G-100' end), 0) as good,
coalesce(count(case when messagecode = 'T-100' then 'T-100' end), 0) as todo
FROM messages WHERE messagetime >= current_timestamp - ('5' * interval '1 minute')
Выход для записи
fixed: 115,
hope: 334,
good: 1045,
todo: 6000
Я хочу сделать что-то подобное, но, чтобы выбрать количество уникальных идентификаторов испытывают эту messagecode, я знаю, что я должен начать делать
SELECT coalesce(count(DISTINCT id), 0) ...
Но моя проблема в том, что я еще не знаю, как это сделать для нескольких условий по одному и тому же запросу. Ожидаемый результат:
fixed: 13, (13 unique ids exist)
hope: 45, (45 unique ids exist)
good: 110, (110 unique ids exist)
todo: 414 (414 unique ids exist)
Как я смогу его достичь?
Попробуйте 'граф (отличный случай, когда ... тогда конец идентификатор)' –
Действительно, большое спасибо, я никогда не думал, изменяя код сообщения с идентификатором @then сделает это. Вы можете добавить ответ, который примет его. Благодарю. –