Как не включать в группировку case when?
Есть небольшой sql запрос, который должен выдавать значение по полям, но запрашивает группировку, если включаю в группировку то я получаю не те данные, которые хотел бы видеть , запрос выглядит вот так:
CREATE TABLE client_calls (client_number VARCHAR(255), dt DATE, title VARCHAR(255),count VARCHAR(255));
INSERT INTO client_calls (client_number, dt , title,count )
VALUES
('89874234523', '2021-10-10', 'Как оцениваете сервис?', '4'),
('89874234523', '2021-10-10', 'Как оцениваете работу мастера?', '5'),
('89874234524', '2021-10-11', 'Как оцениваете сервис?', '3'),
('89874234524', '2021-10-11', 'Как оцениваете работу мастера?', '2'),
('89874234525', '2021-10-12', 'Как оцениваете сервис?', '5'),
('89874234525', '2021-10-12', 'Как оцениваете работу мастера?', '3'),
select
(case when title = 'Как оцениваете сервис?' then count
else
0
end) as hello,
(case when title = 'Как оцениваете работу мастера?' then count
else
0
end) as znach,
sum(case when title = 'Как оцениваете работу мастера?' then count
when title = 'Как оцениваете сервис?' then count
else
0
end) as all,
client_number as client,
dt as date1
from client_calls
group by client_number, d
То есть код запрашивает добавить в группировку title и count , подскажите пожалуйста, как можно обойти group by или же сделать что-то иначе?
Cейчас пишет ошибку "column "title" must appear in the GROUP BY clause or be used in an aggregate"
. Если добавить title и count в group by будет выдавать примерно такой результат:
Нужно сделать такой:

Ответы (1 шт):
SELECT client_number,
dt,
SUM(CASE WHEN title = 'Как оцениваете сервис?'
THEN "count" :: INT
ELSE 0
END) AS hello,
SUM(CASE WHEN title = 'Как оцениваете работу мастера?'
THEN "count" :: INT
ELSE 0
END) AS znach,
SUM(CASE WHEN title IN ('Как оцениваете сервис?',
'Как оцениваете работу мастера?')
THEN "count" :: INT
ELSE 0
END) AS "all"
FROM client_calls
GROUP BY 1, 2;
https://dbfiddle.uk/?rdbms=postgres_14&fiddle=e9a608f36b87f39699242cbb31dc1544
Кстати, хранить число в текстовом поле (я про count VARCHAR(255)) как бы неправильно... И использовать служебные слова как имена полей - тоже.