Аналіз продажів Data Mart

pic

Зображення від freepik

Вступ

Засновник Data Mart, Алекс, шукає допомогу в аналізі продажів та ефективності організації. Data Mart — це новий онлайн-супермаркет Алекса. У червні 2020 року були здійснені зміни у постачанні на Data Mart. Тепер усі продукти Data Mart використовують методи сталого пакування на кожному етапі, починаючи від ферми і до покупця.

Алекс потребує нашої допомоги для оцінки впливу цих змін на продажі Data Mart та його окремі бізнес-області.

НАБІР ДАНИХ

Ми маємо тільки одну таблицю. weeklysalestable

pic

ОЧИЩЕННЯ ДАНИХ

Дані потребують деякої обробки перед тим, як ми зможемо перейти до аналізу.

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

pic

Таблиця cleanweeklysales

ДОСЛІДЖЕННЯ ДАНИХ

Давайте дослідимо дані, щоб отримати деякі ключові інсайти.

  1. Які номери тижнів відсутні в наборі даних?
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;

pic

Ці тижні відсутні в даних

  1. Скільки всього транзакцій було здійснено за кожен рік у наборі даних?
SELECT  
 calendar_year,  
 SUM(transactions) AS total_transactions  
FROM clean_weekly_sales group by year_number;

pic

Згідно з наведеними результатами, можна сказати, що 2020 рік має більше транзакцій, ніж 2019 та 2018.

  1. Які загальні продажі для кожного регіону за кожен місяць?
SELECT  
 month_number,  
 region,  
 SUM(sales) AS total_sales  
FROM clean_weekly_sales  
GROUP BY month_number, region  
ORDER BY month_number, region;

pic

pic
Загальні продажі по регіонах за місяць

  1. Яка загальна кількість транзакцій для кожної платформи?
SELECT  
 platform,  
 SUM(transactions) AS total_transactions  
FROM clean_weekly_sales  
GROUP BY platform;

pic

Загальна кількість транзакцій для кожної платформи

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;

pic

% продаж для retail та shopify кожного місяця

  1. Який відсоток продажів за демографією для кожного року в наборі даних?
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;

pic

% продажів для кожного демографічного сегмента за рік

  1. Які значення 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;

pic

Продажі retail за демографічними сегментами та віковими групами

Невідома вікова група та невідомий демографічний сегмент вносять найбільший внесок.

ВИСНОВОК

Після проведення детального аналізу продажів ми виявили ключові інсайти щодо ефективності продажів по різних регіонах, платформах, демографіях та вікових групах. Зокрема, перехід на сталу упаковку у червні 2020 року співпав із збільшенням кількості транзакцій порівняно з попередніми роками, що свідчить про позитивний вплив.

Якщо говорити про внесок платформ у продажі, хоча відсоток продажів через Shopify зростає, продажі на Retail залишаються найвищими. Потрібні стратегії, спрямовані на підвищення продажів через Shopify.

При аналізі демографічних трендів виявлено, що невизначені вікові групи та демографічні сегменти сприяють найбільше продажам Retail, що сигналізує про потребу в покращенні сегментації клієнтів та відстеженні їх характеристик.

Перекладено з: DATA MART SALES ANALYSIS

Leave a Reply

Your email address will not be published. Required fields are marked *