У меня есть тип postgresql и таблица
CREATE TYPE mem_status AS ENUM('waiting', 'active', 'expired');
CREATE TABLE mems (
id BIGSERIAL PRIMARY KEY,
status mem_status NOT NULL
);
набор данных
INSERT INTO mems(id, status) VALUES
(1, 'active'), (2, 'active'), (3, 'expired');
Я хочу запросить счетчики, сгруппированные по статусам.Итак, я обработал запрос ниже.
WITH mem_statuses AS (
SELECT unnest(enum_range(NULL::mem_status)) AS status
)
SELECT m.status, count(1)
FROM mems m
RIGHT JOIN mem_statuses ms ON ms.status = m.status
GROUP BY m.status;
Но если нет waiting
мемов, результат будет выглядеть следующим образом.
status | count
================
NULL | 1 <- problem
'active' | 2
'expired' | 1
Я хочу получить такой результат.
status | count
================
'waiting' | 0
'active' | 2
'expired' | 1
Как я могу это сделать?