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

222. Продавцы с хорошими отзывами по городам

Средняя

sellers — продавцы и их город, reviews — отзывы покупателей с оценкой stars от 1 до 5. Оценки может не быть: отзыв только текстом, stars IS NULL.

Для каждого города, где есть хотя бы один продавец, верните city, sellers — всех продавцов города и sellers_good — сколько из них получили хотя бы один отзыв на 4 или 5 звёзд.

Город без хороших отзывов тоже нужен, с нулём. Порядок — по city.

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

Таблицы

sellers — продавец

КолонкаТипЧто значит
seller_idintключ
citytextгород

reviews — отзыв на продавца

КолонкаТипЧто значит
review_idintключ
seller_idintпродавец
starsint1–5 или NULL

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

sellers · 4 строки

seller_idcity
1Казань
2Казань
3Казань
4Тула

reviews · 4 строки

review_idseller_idstars
1015
1114
1222
134NULL

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

citysellerssellers_good
Казань31
Тула10
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
city, sellers, sellers_good
LEFT JOINGROUP BYDISTINCTNULL

Источник: тестовое аналитика данных (Middle) в Авито, сборник No Data No Growth. Условие пересказано своими словами.