Фото від Jonas Jacobsson на Unsplash
Трохи контексту
Набір даних доступний на Data Playground від Maven Analytics, і містить записи транзакцій у вигаданій мережі кав'ярень з трьома магазинами в Нью-Йорку. Дані включають інформацію про дату, час та продукти приблизно 150 000 продажів за першу половину 2023 року.
Дані спочатку були у форматі .xlsx, я конвертував їх у .csv і завантажив у базу даних PostgreSQL. Отже, інструменти, що використовуються в цьому проєкті, це Microsoft Power BI і мова SQL.
Завдання команди Maven Roasters
Маючи три підрозділи в Нью-Йорку (Astoria, Hell’s Kitchen та Lower Manhattan), команда звернулася до аналітика даних з такими запитами:
- Яка тенденція продажів у Maven Roasters з часом?
- Які дні тижня мають найбільшу активність?
- Які продукти продаються найкраще, а які гірше? Які приносять найбільший дохід для кав'ярень?
Крім того, команда хоче отримати дашборд для відстеження результатів продажів у магазинах.
Рисунок 1: Колонки набору даних.
Результати за часом
Перший необхідний крок — це створення колонки, яка буде вираховувати дохід, отриманий від кожного замовлення.
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data;
Рисунок 2: Створення колонки для обчислення доходу.
Ми можемо оцінити результати продажів за двома факторами:
- Загальний дохід;
- Кількість транзакцій.
Тому наступний крок — це групування загального доходу по місяцях та оцінка місячного зростання за допомогою наступної CTE.
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
),
revenue AS (
SELECT
EXTRACT(YEAR FROM transaction_date) AS year
, EXTRACT(MONTH FROM transaction_date) AS month_num
, SUM(revenue) AS total_revenue
FROM source
GROUP BY year, month_num
)
SELECT
year
, month_num
, total_revenue
, ROUND((total_revenue - LAG(total_revenue, 1) OVER(ORDER BY month_num))
/ LAG(total_revenue, 1) OVER(ORDER BY month_num) * 100, 2) AS MoM
FROM revenue
Рисунок 3: Результати продажів кав'ярень по місяцях
Період з березня по травень показав сильне зростання доходів у Maven Roasters, а в червні також був зафіксований ріст доходу, що вказує на продовження тенденції зростання.
Фото від Jonas Jacobsson на Unsplash
Трохи контексту
Набір даних доступний на Data Playground від Maven Analytics, і містить записи транзакцій у вигаданій мережі кав'ярень з трьома магазинами в Нью-Йорку. Дані включають інформацію про дату, час та продукти приблизно 150 000 продажів за першу половину 2023 року.
Дані спочатку були у форматі .xlsx, я конвертував їх у .csv і завантажив у базу даних PostgreSQL. Отже, інструменти, що використовуються в цьому проєкті, це Microsoft Power BI і мова SQL.
Запити від команди Maven Roasters
Маючи три підрозділи в Нью-Йорку (Astoria, Hell’s Kitchen та Lower Manhattan), команда звернулася до аналітика даних з такими запитами:
- Яка тенденція продажів у Maven Roasters з часом?
- Які дні тижня мають найбільшу активність?
- Які продукти продаються найкраще, а які гірше? Які приносять найбільший дохід для кав'ярень?
Крім того, команда хоче отримати дашборд для відстеження результатів продажів у магазинах.
Результати за кількістю транзакцій
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
),
orders AS (
SELECT
EXTRACT(YEAR FROM transaction_date) AS year
, EXTRACT(MONTH FROM transaction_date) AS month_num
, COUNT(transaction_id)::NUMERIC(10, 2) AS total_orders
FROM source
GROUP BY year, month_num
)
SELECT
year
, month_num
, total_orders::INTEGER
, ROUND((total_orders - LAG(total_orders, 1) OVER(ORDER BY month_num))
/ LAG(total_orders, 1) OVER(ORDER BY month_num) * 100, 2) AS mom
FROM orders
Рисунок 4: Перегляд результатів місяць за місяцем по кількості транзакцій.
Ми можемо стверджувати, що Maven Roasters має тенденцію до зростання у своїх доходах та комерційній діяльності.
Продажі за тиждень
Для того, щоб відповісти на це питання, необхідно групувати дані за загальним доходом по днях тижня. Також я використаю години роботи кав'ярень для глибшого аналізу.
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
)
SELECT
TO_CHAR(transaction_date, 'Day') AS weekday
, SUM(revenue) AS total_revenue
FROM source
GROUP BY weekday
ORDER BY total_revenue DESC
Рисунок 5: Загальний дохід по днях тижня.
Понеділки та п'ятниці — це дні з найбільшою активністю в кав'ярнях, тепер давайте розглянемо години та дні з найбільшими доходами.
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
)
SELECT
DATE_TRUNC('hour', transaction_time)::time AS hour
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Monday' THEN revenue ELSE 0 END) AS mon
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Tuesday' THEN revenue ELSE 0 END) AS tue
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Wednesday' THEN revenue ELSE 0 END) AS wed
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Thursday' THEN revenue ELSE 0 END) AS thu
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Friday' THEN revenue ELSE 0 END) AS fri
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Saturday' THEN revenue ELSE 0 END) AS sat
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Sunday' THEN revenue ELSE 0 END) AS sun
FROM source
GROUP BY hour
ORDER BY hour
Рисунок 6: Доходи по годинам та дням тижня.
Пік активності в кав'ярнях Maven Roasters припадає на період з 8:00 до 10:00.
Фото від Jonas Jacobsson на Unsplash
Трохи контексту
Набір даних доступний на Data Playground від Maven Analytics, і містить записи транзакцій у вигаданій мережі кав'ярень з трьома магазинами в Нью-Йорку. Дані включають інформацію про дату, час та продукти приблизно 150 000 продажів за першу половину 2023 року.
Дані спочатку були у форматі .xlsx, я конвертував їх у .csv і завантажив у базу даних PostgreSQL. Отже, інструменти, що використовуються в цьому проєкті, це Microsoft Power BI і мова SQL.
Запити від команди Maven Roasters
Маючи три підрозділи в Нью-Йорку (Astoria, Hell’s Kitchen та Lower Manhattan), команда звернулася до аналітика даних з такими запитами:
- Яка тенденція продажів у Maven Roasters з часом?
- Які дні тижня мають найбільшу активність?
- Які продукти продаються найкраще, а які гірше? Які приносять найбільший дохід для кав'ярень?
Крім того, команда хоче отримати дашборд для відстеження результатів продажів у магазинах.
Аналіз продуктивності за кількістю транзакцій
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
),
orders AS (
SELECT
EXTRACT(YEAR FROM transaction_date) AS year
, EXTRACT(MONTH FROM transaction_date) AS month_num
, COUNT(transaction_id)::NUMERIC(10, 2) AS total_orders
FROM source
GROUP BY year, month_num
)
SELECT
year
, month_num
, total_orders::INTEGER
, ROUND((total_orders - LAG(total_orders, 1) OVER(ORDER BY month_num))
/ LAG(total_orders, 1) OVER(ORDER BY month_num) * 100, 2) AS mom
FROM orders
Рисунок 4: Перегляд результатів місяць за місяцем по кількості транзакцій.
Ми можемо стверджувати, що Maven Roasters має тенденцію до зростання у своїх доходах та комерційній діяльності.
Продажі по днях тижня
Для того, щоб відповісти на це питання, необхідно групувати дані за загальним доходом по днях тижня. Також я використаю години роботи кав'ярень для глибшого аналізу.
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
)
SELECT
TO_CHAR(transaction_date, 'Day') AS weekday
, SUM(revenue) AS total_revenue
FROM source
GROUP BY weekday
ORDER BY total_revenue DESC
Рисунок 5: Загальний дохід по днях тижня.
Понеділки та п'ятниці — це дні з найбільшою активністю в кав'ярнях, тепер давайте розглянемо години та дні з найбільшими доходами.
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
)
SELECT
DATE_TRUNC('hour', transaction_time)::time AS hour
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Monday' THEN revenue ELSE 0 END) AS mon
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Tuesday' THEN revenue ELSE 0 END) AS tue
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Wednesday' THEN revenue ELSE 0 END) AS wed
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Thursday' THEN revenue ELSE 0 END) AS thu
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Friday' THEN revenue ELSE 0 END) AS fri
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Saturday' THEN revenue ELSE 0 END) AS sat
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Sunday' THEN revenue ELSE 0 END) AS sun
FROM source
GROUP BY hour
ORDER BY hour
Рисунок 6: Доходи по годинам та дням тижня.
Пік активності в кав'ярнях Maven Roasters припадає на період з 8:00 до 10:00.
Фото від Jonas Jacobsson на Unsplash
Трохи контексту
Набір даних доступний на Data Playground від Maven Analytics, і містить записи транзакцій у вигаданій мережі кав'ярень з трьома магазинами в Нью-Йорку. Дані включають інформацію про дату, час та продукти приблизно 150 000 продажів за першу половину 2023 року.
Дані спочатку були у форматі .xlsx, я конвертував їх у .csv і завантажив у базу даних PostgreSQL. Отже, інструменти, що використовуються в цьому проєкті, це Microsoft Power BI і мова SQL.
Запити від команди Maven Roasters
Маючи три підрозділи в Нью-Йорку (Astoria, Hell’s Kitchen та Lower Manhattan), команда звернулася до аналітика даних з такими запитами:
- Яка тенденція продажів у Maven Roasters з часом?
- Які дні тижня мають найбільшу активність?
- Які продукти продаються найкраще, а які гірше? Які приносять найбільший дохід для кав'ярень?
Крім того, команда хоче отримати дашборд для відстеження результатів продажів у магазинах.
Аналіз продуктивності за кількістю транзакцій
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
),
orders AS (
SELECT
EXTRACT(YEAR FROM transaction_date) AS year
, EXTRACT(MONTH FROM transaction_date) AS month_num
, COUNT(transaction_id)::NUMERIC(10, 2) AS total_orders
FROM source
GROUP BY year, month_num
)
SELECT
year
, month_num
, total_orders::INTEGER
, ROUND((total_orders - LAG(total_orders, 1) OVER(ORDER BY month_num))
/ LAG(total_orders, 1) OVER(ORDER BY month_num) * 100, 2) AS mom
FROM orders
Рисунок 4: Перегляд результатів місяць за місяцем по кількості транзакцій.
Ми можемо стверджувати, що Maven Roasters має тенденцію до зростання у своїх доходах та комерційній діяльності.
Продажі по днях тижня
Для того, щоб відповісти на це питання, необхідно групувати дані за загальним доходом по днях тижня. Також я використаю години роботи кав'ярень для глибшого аналізу.
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
)
SELECT
TO_CHAR(transaction_date, 'Day') AS weekday
, SUM(revenue) AS total_revenue
FROM source
GROUP BY weekday
ORDER BY total_revenue DESC
Рисунок 5: Загальний дохід по днях тижня.
Понеділки та п'ятниці — це дні з найбільшою активністю в кав'ярнях, тепер давайте розглянемо години та дні з найбільшими доходами.
WITH source AS (
SELECT
transaction_id
, store_id
, product_id
, transaction_date
, transaction_time
, store_location
, product_category
, product_type
, product_detail
, transaction_qty
, unit_price
, (transaction_qty * unit_price) AS revenue
FROM mv.sales_data
)
SELECT
DATE_TRUNC('hour', transaction_time)::time AS hour
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Monday' THEN revenue ELSE 0 END) AS mon
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Tuesday' THEN revenue ELSE 0 END) AS tue
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Wednesday' THEN revenue ELSE 0 END) AS wed
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Thursday' THEN revenue ELSE 0 END) AS thu
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Friday' THEN revenue ELSE 0 END) AS fri
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Saturday' THEN revenue ELSE 0 END) AS sat
, SUM(CASE WHEN TO_CHAR(transaction_date, 'Day') = 'Sunday' THEN revenue ELSE 0 END) AS sun
FROM source
GROUP BY hour
ORDER BY hour
Рисунок 6: Доходи по годинам та дням тижня.
Пік активності в кав'ярнях Maven Roasters припадає на період з 8:00 до 10:00.
Промоції на нові та найбільш продавані продукти, як-от Brewed Chai Tea, можуть допомогти утримати увагу клієнтів.
Дякую, що дійшли до кінця!
Ви можете побачити більше моїх робіт на:
І зв'язатися зі мною через:
- Електронна пошта: [email protected]
- Телефон: +55 88 999934237
Перекладено з: Analisando as vendas de uma rede de cafeterias em Nova Iorque