Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

E-commerce Sales Analytics — SQL

Аналитический проект на PostgreSQL поверх датасета e-commerce продаж (Kaggle): ~138k заказов, ~400k позиций заказов, 25k клиентов, 1175 товаров. Основной упор — SQL: нормализованная схема из 4 связанных таблиц, запросы с JOIN (в том числе 3-табличные), оконными функциями, CTE и подзапросами. Дополнительно — экстракт для дашборда в Tableau.

Схема данных

customers ──┐
            │ 1:N
            ▼
         orders ──┐
            ▲      │ 1:N
            │      ▼
         (customer_id)   order_items ──► products
  • customers (25 000) — демография и регион клиента
  • products (1 175) — категория, бренд, себестоимость
  • orders (138 116) — заголовок заказа: канал продаж, оплата, доставка, маркетинг, агрегированные суммы по заказу
  • order_items (397 569) — позиции заказа (товар, количество, скидка, прибыль по строке)

Установка и запуск

Два варианта — с Docker или без, выбирай что удобнее.

Вариант A — с Docker (быстрее):

docker compose up -d
pip install -r requirements.txt
python load_data.py
psql postgresql://ecommerce:ecommerce@localhost:5432/ecommerce -f sql/02_analysis_queries.sql

Вариант B — без Docker (локальный Postgres):

# Mac: поставь Postgres.app (postgresapp.com) — просто .dmg, без терминала
# или через Homebrew: brew install postgresql@16 && brew services start postgresql@16
createdb ecommerce
psql ecommerce -f sql/01_schema.sql
pip install -r requirements.txt
DATABASE_URL=postgresql://localhost/ecommerce python load_data.py
psql ecommerce -f sql/02_analysis_queries.sql

Исходные CSV не включены в репозиторий (см. .gitignore, суммарно ~85 МБ) — положите их в data/ перед запуском load_data.py. Источник — Kaggle (e-commerce sales & customer analytics).

Структура

sql/
  01_schema.sql              — DDL: 4 таблицы, FK, индексы
  02_analysis_queries.sql    — 10 аналитических запросов (JOIN, GROUP BY, подзапросы)
load_data.py                 — загрузка CSV в Postgres
eda_pandas.ipynb             — доп. EDA и визуализация на pandas/matplotlib
tableau/
  orders_enriched.csv        — плоский экстракт для Tableau (заказы + клиенты)
  DASHBOARD_SPEC.md           — спецификация дашборда

Ключевые находки

  • Electronics — самая доходная категория: $41.1M выручки и $14.1M прибыли; следом — Jewelry ($25.6M) и Home Appliances ($24.8M)
  • Топ по выручке — регион South: $55.6M на 43 990 заказов, почти вдвое больше, чем North ($22.6M на 16 624 заказа)
  • Organic Search — лидирующий маркетинговый канал: $35.7M выручки при марже ~45%, которая держится примерно на одном уровне (44.9–45.4%) по всем каналам
  • Скорость доставки напрямую влияет на оценку клиента: Early → 4.02, On Time → 3.73, Delayed → 3.22 — почти линейное падение
  • Доля возвратов держится в узком диапазоне 6.5–7.2% почти по всем категориям — заметных выбросов нет, кроме чуть повышенного Automotive (7.23%)
  • Средний чек (~$1 280) почти не различается между сегментами клиентов (Consumer/Premium/ VIP/Business) — сегменты дают разницу в объёме продаж, а не в размере чека

Стек

PostgreSQL · Python (pandas, psycopg2, matplotlib) · Docker · Tableau

About

SQL + Tableau аналитика по e-commerce продажам — реляционная схема, JOIN, агрегаты, дашборд в Tableau

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages