MySQL · MySQL 8.4.6
Каждый месяц клиент выбирает до четырёх категорий повышенного кешбэка. Выбор хранится одной строкой: categories — JSON-массив названий. Из-за ошибки в старой версии приложения в массиве иногда повторяется одна категория.
Для каждого месяца верните топ-3 категории по числу клиентов: month, category, clients. Клиент считается один раз, даже если категория повторилась в его массиве. Места делят через RANK(): если на третьем месте ничья, в ответ идут все категории с этим местом.
В работе: Планирование партнёрских категорий на следующий месяц: какие из них клиенты берут чаще.
Как проверяем
Движка MySQL в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите все верные варианты (одна лишняя отметка допустима). После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
Источник: на данных Т‑Банка: выбор категорий повышенного кешбэка. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Какие запросы вернут топ-3 категорий каждого месяца?
- JSON_TABLE по '$[*]', COUNT(DISTINCT), RANK() ≤ 3
- Ранг через подсчёт категорий с большим числом клиентов
- COUNT(*) вместо COUNT(DISTINCT client_id)
- ROW_NUMBER() ≤ 3
- JSON_TABLE с путём '$[0]'