Sobes.tech
Intern
45

-- Найти топ5 % пользователей с наибольшим количеством заказов по name

Компании, где спрашивали
СБЕР ЗвукСБЕР Звук

Ответ от нейросети

sobes.tech AI

Для поиска топ 5% пользователей с наибольшим количеством заказов по имени, можно использовать SQL-запрос с агрегацией и оконной функцией для вычисления процента.

Пример на SQL:

WITH user_order_counts AS (
  SELECT
    name,
    COUNT(*) AS order_count
  FROM orders
  GROUP BY name
), ranked_users AS (
  SELECT
    name,
    order_count,
    NTILE(100) OVER (ORDER BY order_count DESC) AS percentile_rank
  FROM user_order_counts
)
SELECT name, order_count
FROM ranked_users
WHERE percentile_rank <= 5
ORDER BY order_count DESC;

Здесь:

  • Сначала считаем количество заказов для каждого пользователя (по имени).
  • Затем с помощью NTILE(100) разбиваем пользователей на 100 групп по убыванию количества заказов.
  • Выбираем пользователей, попавших в верхние 5% (percentile_rank <= 5).

Если база не поддерживает NTILE, можно использовать другие методы, например, вычислить порог по количеству заказов и выбрать пользователей с количеством заказов выше этого порога.