Войти Регистрация
Data base

204. Средняя оценка чата поддержки по темам

Лёгкая

После чата в СберБанк Онлайн клиент может поставить оценку от 1 до 5. Если не поставил, support_chats.score — NULL.

Для каждой темы topic верните chats — число чатов, rated — сколько из них оценили, avg_score — среднюю оценку среди оценивших, до двух знаков. Если в теме никто не оценил, avg_score — NULL. Порядок — по topic.

В работе: Отчёт качества поддержки: по каким темам клиенты уходят недовольными.

Таблицы

support_chats — одна строка — один чат

КолонкаТипЧто значит
chat_idintключ
topictextтема обращения
closed_attimestampзакрытие чата
scoreintоценка 1–5, NULL — не оценил

Пример: данные

support_chats · 7 строк

chat_idtopicclosed_atscore
1Карты2026-02-02T10:15:005
2Карты2026-02-02T11:40:00NULL
3Карты2026-02-03T09:05:004
4Переводы2026-02-03T12:30:002
5Переводы2026-02-03T13:10:00NULL
6Переводы2026-02-04T18:45:00NULL
7Вклады2026-02-05T08:20:00NULL

Ожидаемый ответ

topicchatsratedavg_score
Вклады10NULL
Карты324,5
Переводы312
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
topic, chats, rated, avg_score
NULLGROUP BYусловная агрегация

Источник: наша задача на данных Сбера: оценки чата поддержки в СберБанк Онлайн. Условие пересказано своими словами.