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

110. Популярные категории кешбэка за месяц

Средняя

MySQL · MySQL 8.4.6

Каждый месяц клиент выбирает до четырёх категорий повышенного кешбэка. Выбор хранится одной строкой: categories — JSON-массив названий. Из-за ошибки в старой версии приложения в массиве иногда повторяется одна категория.

Для каждого месяца верните топ-3 категории по числу клиентов: month, category, clients. Клиент считается один раз, даже если категория повторилась в его массиве. Места делят через RANK(): если на третьем месте ничья, в ответ идут все категории с этим местом.

В работе: Планирование партнёрских категорий на следующий месяц: какие из них клиенты берут чаще.

Как проверяем Движка MySQL в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите все верные варианты (одна лишняя отметка допустима). После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
JSONJSON_TABLEоконные функциитоп-N в группеDISTINCT

Источник: на данных Т‑Банка: выбор категорий повышенного кешбэка. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какие запросы вернут топ-3 категорий каждого месяца?

  • JSON_TABLE по '$[*]', COUNT(DISTINCT), RANK() ≤ 3
  • Ранг через подсчёт категорий с большим числом клиентов
  • COUNT(*) вместо COUNT(DISTINCT client_id)
  • ROW_NUMBER() ≤ 3
  • JSON_TABLE с путём '$[0]'