Зарегистрируйтесь, чтобы продолжить обучение

Агрегация для столбчатой диаграммы Продвинутая аналитика на SQL

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

Столбчатые диаграммы — это полезный инструмент визуализации, когда нужно сравнить числовые величины по разным категориям. Знания из урока помогут строить отчеты с использованием столбчатых диаграмм.

Столбчатая диаграмма

Столбчатые диаграммы используют, чтобы визуализировать, какое число соответствует каждой категории.

Предположим, у нас есть таблица суммарных продаж товаров по разным типам:

total_sales

sub_category sales
Accessories 13285.68
Appliances 6830.277
Art 2820.666
... ...

В этой таблице есть два столбца:

  1. Тип товара — значение, которое выражается строкой. Категориальное значение
  2. Суммарные продажи — числовое значение

В столбчатой диаграмме каждая категория наносится отдельным делением на одну из осей диаграммы. Это деление — основание столбца. По другой из осей мы откладываем числовое значение категории. Высота столбца будет равна этому числу.

Столбчатые диаграммы бывают:

  1. Вертикальные
  2. Горизонтальные

В вертикальной диаграмме столбцы направлены по вертикальной оси, а в горизонтальной — по горизонтальной оси.

Вертикальная столбчатая диаграмма по таблице выше будет выглядеть так:

vertical_bar_chart

На этом графике мы изобразили вертикальную столбчатую диаграмму суммарных продаж.

Горизонтальная столбчатая диаграмма выглядит аналогично, но с перевернутыми осями:

horizontal_bar_chart

Мы видим, что горизонтальная столбчатая диаграмма отличается от вертикальной только расположением признаков по осям.

Агрегация суммарных продаж для каждого товара

Теперь представим, что у нас есть таблица продаж товаров по разным категориям и регионам:

sales

order_id order_date ship_date ship_mode customer_id customer_name segment country city state postal_code region product_id category sub_category product_name sales quantity discount profit
CA-2014-103800 2014-01-03 00:00:00 2014-01-07 00:00:00 Standard Class DP-13000 Darren Powers Consumer United States Houston Texas 77095 Central OFF-PA-10000174 Office Supplies Paper Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book 16.448 2 0.2 5.551199999999998
CA-2014-112326 2014-01-04 00:00:00 2014-01-08 00:00:00 Standard Class PO-19195 Phillina Ober Home Office United States Naperville Illinois 60540 Central OFF-LA-10003223 Office Supplies Labels Avery 508 11.784 3 0.2 4.271699999999999
CA-2014-112326 2014-01-04 00:00:00 2014-01-08 00:00:00 Standard Class PO-19195 Phillina Ober Home Office United States Naperville Illinois 60540 Central OFF-ST-10002743 Office Supplies Storage SAFCO Boltless Steel Shelving 272.736 3 0.2 -64.77480000000001
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

В этой таблице есть такие столбцы:

  1. order_id — ID заказа
  2. order_date — дата заказа
  3. ship_date — дата отгрузки товара
  4. ship_mode — класс отгрузки
  5. customer_id — ID покупателя
  6. customer_name — имя покупателя
  7. segment — категория покупателя
  8. country — страна
  9. city — город
  10. state — штат / округ
  11. postal_code — почтовый индекс
  12. region — регион
  13. product_id — ID товара
  14. category — категория товара
  15. sub_category — подкатегория товара
  16. product_name — наименование товара
  17. sales — сумма продаж по заказу
  18. quantity — количество единиц товара в заказе
  19. discount — скидка на заказ
  20. profit — прибыль по заказу

Мы хотим получить таблицу суммарных продаж по подкатегориям товаров и визуализировать ее с помощью столбчатой диаграммы. Для этого мы агрегируем таблицу sales по подкатегориям товаров. Мы будем использовать столбцы sub_category и sales.

Агрегация для визуализации столбчатой диаграммой «схлопывает» данные о продажах, суммируя все продажи по каждой из категорий. Так мы получаем суммарные продажи по каждой уникальной категории товаров и, например, можем узнать наиболее прибыльную категорию.

Агрегируем таблицу продаж в суммарные продажи по подкатегориям товаров средствами SQL.

Для этого мы откроем базу данных bar_chart. В ней содержится таблица sales, в которой 1000 строк и 20 столбцов. Ее начало мы видели в таблице Sales выше. Напишем SQL-запрос для агрегации:

SELECT
    sub_category,
    SUM(sales) AS total_sales
FROM sales
GROUP BY sub_category;

В результате этого запроса мы получили таблицу:

total_sales

sub_category total_sales
Paper 6648.283999999999
Labels 1308.4160000000002
Storage 20823.572
Binders 21403.09499999999
Art 2820.6659999999983
Chairs 32388.257999999994
Phones 38570.604
Fasteners 380.5800000000001
Furnishings 6706.3640000000005
Accessories 13285.68
Envelopes 1605.862
Bookcases 6707.1536
Appliances 6830.276999999999
Tables 24083.6545
Supplies 12940.315999999995
Machines 26854.097
Copiers 5309.888000000001

Ссылка на таблицу

В этой таблице представлены суммарные продажи для каждой из подкатегорий товаров.

Скопируем таблицу в Google Sheets, заменим в столбце total_sales все точки на запятые и построим столбчатую диаграмму:

total_sales

На рисунке мы видим столбчатую диаграмму суммарных продаж по подкатегориям товаров.

Отсортируем категории по убыванию продаж, чтобы наглядно увидеть самые прибыльные категории. Напишем SQL-запрос с сортировкой по убыванию:

SELECT
    sub_category,
    SUM(sales) AS total_sales
FROM sales
GROUP BY sub_category
ORDER BY total_sales DESC;

С помощью такого запроса мы получили отсортированную таблицу:

ordered_total_sales

sub_category total_sales
Phones 38570.604
Chairs 32388.257999999994
Machines 26854.097
Tables 24083.6545
Binders 21403.09499999999
Storage 20823.572
Accessories 13285.68
Supplies 12940.315999999995
Appliances 6830.276999999999
Bookcases 6707.1536
Furnishings 6706.3640000000005
Paper 6648.283999999999
Copiers 5309.888000000001
Art 2820.6659999999983
Envelopes 1605.862
Labels 1308.4160000000002
Fasteners 380.5800000000001

Ссылка на таблицу

Здесь представлена отсортированная по убыванию таблица продаж по подкатегориям товаров.

Теперь построим по этой таблице горизонтальную столбчатую диаграмму. Для этого скопируем таблицу в Google Sheets и выберем тип диаграммы «Линейчатая»:

total_sales_ordered

Мы построили горизонтальную столбчатую диаграмму по отсортированной таблице суммарных продаж по категориям. Видим, что самые прибыльные категории — это телефоны и стулья.

Теперь попробуем исключить из агрегации штат Нью-Йорк. Напишем агрегацию на SQL с условием:

SELECT
    sub_category,
    SUM(sales) AS total_sales
FROM sales
WHERE state <> 'New York'
GROUP BY sub_category
ORDER BY total_sales DESC;

Посмотрим на таблицу, которую мы получили:

total_sales_without_NY

sub_category total_sales
Phones 35579.044
Chairs 31957.59
Machines 26854.097
Binders 20346.006999999998
Tables 19826.6605
Storage 18685.032
Supplies 12797.215999999997
Accessories 11828.79
Furnishings 6533.994000000001
Bookcases 6353.5856
Appliances 6255.097
Paper 5818.993999999999
Copiers 4749.896000000001
Art 2527.1859999999983
Envelopes 1305.2619999999995
Labels 1294.016
Fasteners 380.5800000000001

Ссылка на таблицу

В этой таблице содержатся суммарные продажи по подкатегориям товаров всех штатов кроме штата Нью-Йорк.

Построим по таблице диаграмму:

total_sales_without_NY

Мы видим, что самыми прибыльными категориями все еще остаются телефоны и стулья.

Выводы

В этом уроке мы рассмотрели, что такое агрегация для столбчатой диаграммы. Мы получили таблицу суммарных продаж по категориям товаров, построили вертикальную столбчатую диаграмму, горизонтальную диаграмму по отсортированной таблице и нашли самые прибыльные категории товаров.

Столбчатые диаграммы часто используются, когда нужно изобразить абсолютные числовые значения по разным категориям относительно друг друга. Знания о том, как агрегировать данные для столбчатой диаграммы, позволят строить полезные и информативные отчеты.


Самостоятельная работа

Возьмите базу из урока, агрегируйте таблицу sales и найдите суммарные продажи по разным штатам. Отсортируйте новую таблицу по убыванию продаж и постройте столбчатую диаграмму. В каких топ-трех штатах самые высокие продажи?

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff