Зображення від freepik
Вступ
Засновник Data Mart, Алекс, шукає допомогу в аналізі продажів та ефективності організації. Data Mart — це новий онлайн-супермаркет Алекса. У червні 2020 року були здійснені зміни у постачанні на Data Mart. Тепер усі продукти Data Mart використовують методи сталого пакування на кожному етапі, починаючи від ферми і до покупця.
Алекс потребує нашої допомоги для оцінки впливу цих змін на продажі Data Mart та його окремі бізнес-області.
НАБІР ДАНИХ
Ми маємо тільки одну таблицю. weeklysalestable
ОЧИЩЕННЯ ДАНИХ
Дані потребують деякої обробки перед тим, як ми зможемо перейти до аналізу.
CREATE TABLE clean_weekly_sales AS
SELECT
week_date,
week(week_date) AS week_number,
month(week_date) AS month_number,
year(week_date) AS calendar_year,
region,
platform,
CASE
WHEN segment = 'null' THEN 'Unknown'
ELSE segment
END AS segment,
CASE
WHEN right(segment, 1) = '1' THEN 'Young Adults'
WHEN right(segment, 1) = '2' THEN 'Middle Aged'
WHEN right(segment, 1) IN ('3', '4') THEN 'Retirees'
ELSE 'Unknown'
END AS age_band,
CASE
WHEN left(segment, 1) = 'C' THEN 'Couples'
WHEN left(segment, 1) = 'F' THEN 'Families'
ELSE 'Unknown'
END AS demographic,
customer_type,
transactions,
sales,
ROUND(
sales / transactions,
2
) AS avg_transaction
FROM weekly_sales;
select * from clean_weekly_sales limit 10;
Ми створили нову таблицю cleanweeklysales, яка містить додаткові стовпці, такі як weeknumber, monthnumber, yearnumber, ageband, demographic, avg_transaction
Таблиця cleanweeklysales
ДОСЛІДЖЕННЯ ДАНИХ
Давайте дослідимо дані, щоб отримати деякі ключові інсайти.
- Які номери тижнів відсутні в наборі даних?
create table seq100
(x int not null auto_increment primary key);
insert into seq100 values (),(),(),(),(),(),(),(),(),();
insert into seq100 values (),(),(),(),(),(),(),(),(),();
insert into seq100 values (),(),(),(),(),(),(),(),(),();
insert into seq100 values (),(),(),(),(),(),(),(),(),();
insert into seq100 values (),(),(),(),(),(),(),(),(),();
insert into seq100 select x + 50 from seq100;
select * from seq100;
create table seq52 as (select x from seq100 limit 52);
select distinct x as week_day from seq52 where x not in(select distinct week_number from clean_weekly_sales);
select distinct week_number from clean_weekly_sales;
Ці тижні відсутні в даних
- Скільки всього транзакцій було здійснено за кожен рік у наборі даних?
SELECT
calendar_year,
SUM(transactions) AS total_transactions
FROM clean_weekly_sales group by year_number;
Згідно з наведеними результатами, можна сказати, що 2020 рік має більше транзакцій, ніж 2019 та 2018.
- Які загальні продажі для кожного регіону за кожен місяць?
SELECT
month_number,
region,
SUM(sales) AS total_sales
FROM clean_weekly_sales
GROUP BY month_number, region
ORDER BY month_number, region;
Загальні продажі по регіонах за місяць
- Яка загальна кількість транзакцій для кожної платформи?
SELECT
platform,
SUM(transactions) AS total_transactions
FROM clean_weekly_sales
GROUP BY platform;
Загальна кількість транзакцій для кожної платформи
5.
Що таке відсоток продажів для Retail та Shopify за кожен місяць?
WITH cte_monthly_platform_sales AS (
SELECT
month_number,year_number,
platform,
SUM(sales) AS monthly_sales
FROM clean_weeklysales
GROUP BY month_number,year_number,platform
)
SELECT
month_number,year_number,
ROUND(
100 * MAX(CASE WHEN platform = 'Retail' THEN monthly_sales ELSE NULL END) /
SUM(monthly_sales),
2
) AS retail_percentage,
ROUND(
100 * MAX(CASE WHEN platform = 'Shopify' THEN monthly_sales ELSE NULL END) /
SUM(monthly_sales),
2
) AS shopify_percentage
FROM cte_monthly_platform_sales
GROUP BY month_number,year_number
ORDER BY month_number,year_number;
% продаж для retail та shopify кожного місяця
- Який відсоток продажів за демографією для кожного року в наборі даних?
SELECT
year_number,
demographic,
SUM(SALES) AS yearly_sales,
ROUND(
(
100 * SUM(sales)/
SUM(SUM(SALES)) OVER (PARTITION BY demographic)
),
2
) AS percentage
FROM clean_weeklysales
GROUP BY
year_number,
demographic
ORDER BY
year_number,
demographic;
% продажів для кожного демографічного сегмента за рік
- Які значення age_band та demographic найбільше сприяють продажам Retail?
select age_band,demographic,sum(sales) as total_sales
from clean_weeklysales
where platform='Retail'
group by age_band,demographic
order by total_sales desc;
Продажі retail за демографічними сегментами та віковими групами
Невідома вікова група та невідомий демографічний сегмент вносять найбільший внесок.
ВИСНОВОК
Після проведення детального аналізу продажів ми виявили ключові інсайти щодо ефективності продажів по різних регіонах, платформах, демографіях та вікових групах. Зокрема, перехід на сталу упаковку у червні 2020 року співпав із збільшенням кількості транзакцій порівняно з попередніми роками, що свідчить про позитивний вплив.
Якщо говорити про внесок платформ у продажі, хоча відсоток продажів через Shopify зростає, продажі на Retail залишаються найвищими. Потрібні стратегії, спрямовані на підвищення продажів через Shopify.
При аналізі демографічних трендів виявлено, що невизначені вікові групи та демографічні сегменти сприяють найбільше продажам Retail, що сигналізує про потребу в покращенні сегментації клієнтів та відстеженні їх характеристик.
Перекладено з: DATA MART SALES ANALYSIS