SQL Studio / Разборы SQL / SQL по CSV
Быстрый старт: откройте режим «Своя SQL-база», нажмите «CSV → таблица», выберите файл и запустите SQL. Здесь есть готовый учебный файл с шестью строками — на нём можно повторить весь разбор без подготовки данных.
1. Какие данные в примере
Файл orders_sample.csv содержит четыре столбца: order_id, city, status и amount_rub. Например, есть два доставленных заказа из Казани на 1200 и 430 рублей и один отменённый на 490 рублей. Отменённые заказы не следует автоматически считать продажами.
| order_id | city | status | amount_rub |
|---|---|---|---|
| 1 | Казань | delivered | 1200 |
| 3 | Казань | cancelled | 490 |
| 4 | Казань | delivered | 430 |
2. Импортировать CSV как таблицу SQL
- Нажмите «Открыть SQL-лабораторию». Это отдельная база, поэтому учебные задания тренажёра не пострадают.
- В панели лаборатории нажмите кнопку «↑ CSV → таблица» и выберите скачанный
orders_sample.csv. - После загрузки появится таблица
orders_sample. Редактор автоматически откроет запрос для просмотра первых 100 строк. - Вставьте запрос из следующего раздела и нажмите «Запустить».
Имя таблицы формируется из имени файла. Если назовёте файл иначе, подставьте соответствующее имя в примерах. Пробелы и специальные символы в именах заменяются безопасными символами; проверить точное имя можно в редакторе после импорта.
3. Посчитать заказы и суммы по городам
SELECT city,
COUNT(*) AS orders_n,
SUM(CAST(amount_rub AS REAL)) AS revenue_rub
FROM orders_sample
WHERE status = 'delivered'
GROUP BY city
ORDER BY revenue_rub DESC, city;
Результат для status = 'delivered': Казань — 2 заказа и 1630 ₽; Пермь — 2 и 1370 ₽; Тверь — 1 и 790 ₽. CAST(... AS REAL) защищает пример от ситуации, когда импорт CSV оставил суммы текстовыми значениями.
| city | orders_n | revenue_rub |
|---|---|---|
| Казань | 2 | 1630 |
| Пермь | 2 | 1370 |
| Тверь | 1 | 790 |
4. Проверить влияние отменённых заказов
SELECT status,
COUNT(*) AS orders_n,
ROUND(SUM(CAST(amount_rub AS REAL)), 2) AS total_rub
FROM orders_sample
GROUP BY status
ORDER BY status;
По всем строкам CSV отдельно получим cancelled = 490 ₽ и delivered = 3790 ₽. Если без проверки статуса посчитать общую сумму 4280 ₽, она не будет соответствовать сумме доставленных заказов. Это обычная причина расхождений в отчётах.
5. Посчитать долю выручки и построить график
WITH by_city AS (
SELECT city, SUM(CAST(amount_rub AS REAL)) AS revenue_rub
FROM orders_sample
WHERE status = 'delivered'
GROUP BY city
)
SELECT city, revenue_rub,
ROUND(100.0 * revenue_rub /
NULLIF(SUM(revenue_rub) OVER (), 0), 2) AS share_pct
FROM by_city
ORDER BY revenue_rub DESC, city;
Доли от суммы доставленных заказов: Казань — 43.01%, Пермь — 36.15%, Тверь — 20.84%. После выполнения SQL перейдите на вкладку «График»: city подходит для подписей оси X, а revenue_rub — для высоты столбцов. При расчёте долей выбирайте один и тот же набор заказов в числителе и знаменателе.
Какие CSV поддерживаются
Текущий импортёр SQL Studio работает с файлами до 1 МБ, не более 3000 строк данных и 40 столбцов. Он определяет разделитель среди запятой, точки с запятой и табуляции, понимает кавычки в значениях. Рекомендуем сохранить CSV в UTF-8; также предусмотрена поддержка некоторых других кодировок.
Если импорт выдаёт ошибку, проверьте, что есть строка заголовков, число полей одинаково в каждой записи, а кавычки закрыты. Это локальная лаборатория для небольших учебных файлов, а не облачное хранилище больших таблиц.
Продолжить обучение
Следующий полезный шаг — взять CSV с двумя таблицами, соединить их и убедиться, что суммы не размножились. Начните с разбора ошибок JOIN или упражнения в тренажёре.
Для последовательной практики на MySQL 8 — курс «SQL для аналитика» на Stepik с итоговой работой и возможностью получить сертификат.