Menu
Coddy logo textTech

Процент от общего

Часть раздела Продвинутый уровень путешествия по 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 округлило бы небольшие доли до нуля.

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • sales: category, product, revenue

Для каждой строки верните:

  • category
  • product
  • revenue
  • pct_of_category: доля выручки продукта в пределах его категории, округлённая до 1 знака после запятой

Используйте PARTITION BY для оконной функции. Отсортируйте по category, затем по pct_of_category в порядке убывания.

Попробуйте сами

SELECT category, product, revenue,
       -- pct как доля внутри категории, используйте PARTITION BY
FROM sales
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Продвинутый уровень

Потренируйтесь самостоятельно: Песочница SQL