Как выполнить SQL-запрос к CSV-файлу онлайн

Не нужно устанавливать MySQL или загружать таблицу на чужой сервер: откройте личную SQLite-базу в браузере, импортируйте CSV и сразу посчитайте показатели.

SQL Studio / Разборы SQL / SQL по CSV

Быстрый старт: откройте режим «Своя SQL-база», нажмите «CSV → таблица», выберите файл и запустите SQL. Здесь есть готовый учебный файл с шестью строками — на нём можно повторить весь разбор без подготовки данных.

1. Какие данные в примере

Файл orders_sample.csv содержит четыре столбца: order_id, city, status и amount_rub. Например, есть два доставленных заказа из Казани на 1200 и 430 рублей и один отменённый на 490 рублей. Отменённые заказы не следует автоматически считать продажами.

Часть учебного CSV
order_idcitystatusamount_rub
1Казаньdelivered1200
3Казаньcancelled490
4Казаньdelivered430

2. Импортировать CSV как таблицу SQL

  1. Нажмите «Открыть SQL-лабораторию». Это отдельная база, поэтому учебные задания тренажёра не пострадают.
  2. В панели лаборатории нажмите кнопку «↑ CSV → таблица» и выберите скачанный orders_sample.csv.
  3. После загрузки появится таблица orders_sample. Редактор автоматически откроет запрос для просмотра первых 100 строк.
  4. Вставьте запрос из следующего раздела и нажмите «Запустить».

Имя таблицы формируется из имени файла. Если назовёте файл иначе, подставьте соответствующее имя в примерах. Пробелы и специальные символы в именах заменяются безопасными символами; проверить точное имя можно в редакторе после импорта.

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 оставил суммы текстовыми значениями.

Результат SELECT после импорта
cityorders_nrevenue_rub
Казань21630
Пермь21370
Тверь1790

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 с итоговой работой и возможностью получить сертификат.