Процент от общего
Часть раздела Продвинутый уровень путешествия по SQL на Coddy. Урок 24 из 27.
Доля каждой строки от общего итога — классический пример оконной функции: разделите значение строки на SUM того же столбца по всему окну.
SELECT product, revenue,
revenue * 100.0 / SUM(revenue) OVER () AS pct
FROM salesПустой OVER () означает «весь набор результатов». Добавьте PARTITION BY, чтобы вместо этого вычислить share within группы (например, OVER (PARTITION BY category) для вычисления share within каждой категории).
Умножайте на 100.0 (а не на 100), чтобы результат деления оставался числом с плавающей точкой. В противном случае целочисленное деление в SQLite округлило бы небольшие доли до нуля.
Задание
ЛегкоДоступные таблицы и столбцы:
sales:category,product,revenue
Для каждой строки верните:
categoryproductrevenuepct_of_category: доля выручки продукта в пределах его категории, округлённая до 1 знака после запятой
Используйте PARTITION BY для оконной функции. Отсортируйте по category, затем по pct_of_category в порядке убывания.
Попробуйте сами
SELECT category, product, revenue,
-- pct как доля внутри категории, используйте PARTITION BY
FROM sales
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Продвинутый уровень
6Рецепты аналитики
Топ-N в группеПроцент от общегоНарастающий итогОдна строка на ключИтоги — Лучшие клиентыПотренируйтесь самостоятельно: Песочница SQL