ChatGPT для аналитика данных: как использовать AI для написания SQL-запросов и анализа результатов

ChatGPT для аналитика данных: как использовать AI для написания SQL-запросов и анализа результатов

Аналитик тратит на написание SQL-запросов от 30% до 50% рабочего времени. Это часы рутинной работы: вспомнить синтаксис оконных функций, правильно написать CTE, не перепутать LEFT JOIN с INNER JOIN в сложном запросе.

ChatGPT меняет эту ситуацию. По данным исследования GitHub за 2024 год, разработчики с AI-ассистентами выполняют задачи на 55% быстрее. Для аналитиков эффект может быть ещё выше — потому что SQL-запросы более шаблонны, чем произвольный код.

Но есть проблема. ChatGPT не знает вашу базу данных. Он не видит структуру таблиц, не понимает бизнес-логику и иногда генерирует красивые, но неработающие запросы. Использовать его без понимания — опасно. Использовать с умом — мощнейший инструмент.

Эта статья — практическое руководство. Как составлять промпты, чтобы получать рабочие запросы с первого раза. Какие задачи ChatGPT решает отлично, а в каких только мешает. Как проверять результаты и не попасть в ловушку галлюцинаций AI.

1. Что ChatGPT умеет и не умеет в SQL

Начнём с честной оценки возможностей. ChatGPT — это языковая модель, обученная на огромном количестве кода, документации и туториалов. Он отлично понимает синтаксис SQL и знает паттерны решения типовых задач.

Вот что он делает хорошо:

ЗадачаРезультатПримечание
Написать базовый SELECT с JOIN✓ ОтличноСправляется с первого раза
Объяснить чужой сложный запрос✓ ОтличноРазбивает на части, объясняет каждую
Оконные функции (ROW_NUMBER, LAG, LEAD)✓ ХорошоИногда нужна корректировка PARTITION BY
CTE и подзапросы✓ ХорошоСтруктурирует логично
Оптимизация запросов△ СреднеДаёт общие рекомендации, но не видит план выполнения
Специфика вашей базы данных✗ ПлохоНе знает структуру ваших таблиц
Бизнес-логика компании✗ ПлохоНе понимает контекст без объяснения

Главное ограничение — ChatGPT не видит вашу базу данных. Он не знает, что таблица orders у вас называется order_fact, что статус заказа хранится в отдельной таблице, а дата создания — в формате Unix timestamp. Всё это нужно объяснять в промпте.

«Я потратил час на отладку запроса от ChatGPT. Оказалось, он использовал функцию DATEADD, которой нет в PostgreSQL. Теперь всегда указываю диалект SQL в промпте.»

— Аналитик данных, финтех

2. Как составить промпт, чтобы получить рабочий запрос

Качество промпта определяет 80% качества ответа. Размытый запрос — размытый результат. Конкретный промпт с контекстом — почти готовый код.

Вот формула эффективного промпта для SQL-задачи:

Контекст + Структура данных + Задача + Ограничения

Разберём каждый элемент.

Контекст — кто вы и какой диалект SQL используете:

Плохо ✗Хорошо ✓
Напиши SQL-запрос для...Я аналитик, работаю с PostgreSQL 14. Напиши запрос для...

Указание диалекта критично. DATEADD работает в SQL Server, но не в PostgreSQL. В MySQL нет QUALIFY. В ClickHouse свой синтаксис массивов.

Структура данных — опишите таблицы и поля:

Плохо ✗Хорошо ✓
Есть таблица с заказами и клиентамиТаблица orders: order_id (INT), user_id (INT), amount (DECIMAL), created_at (TIMESTAMP), status (VARCHAR). Таблица users: user_id (INT), email (VARCHAR), country (VARCHAR)

Чем точнее опишете структуру, тем меньше придётся исправлять. Если таблиц много, опишите только те, которые нужны для задачи.

Задача — что конкретно нужно получить:

Плохо ✗Хорошо ✓
Покажи продажи по месяцамПосчитай общую сумму заказов (поле amount) за каждый месяц 2024 года. Группируй по месяцам, сортируй от старых к новым

Ограничения — бизнес-логика, которую нужно учесть:

Плохо ✗Хорошо ✓
(не указаны)Учитывай только заказы со статусом 'completed'. Исключи тестовых пользователей (email содержит @test.com)

Вот пример полного промпта:

Я аналитик, работаю с PostgreSQL 14.

Структура таблиц:
- orders: order_id, user_id, amount, created_at, status
- users: user_id, email, country, registered_at

Задача: посчитать retention первого месяца для когорт
пользователей Q4 2024.

Когорта = месяц регистрации.
Retention = доля пользователей, сделавших хотя бы один
заказ в течение 30 дней после регистрации.

Ограничения:
- Только пользователи из России (country = 'RU')
- Исключить заказы со статусом 'cancelled'
- Исключить тестовые email (@test.com)

С таким промптом ChatGPT даст рабочий запрос в 9 случаях из 10. Если что-то не так — легко уточнить, потому что контекст уже задан.

3. Шесть типовых задач, которые ChatGPT решает за минуту

Есть категории SQL-задач, где ChatGPT особенно эффективен. Это паттерны, которые встречаются постоянно и имеют стандартные решения.

Задача 1: Когортный анализ

Когорты — головная боль для многих аналитиков. Нужно правильно определить когорту, посчитать метрику для каждого периода, развернуть в матрицу.

Промпт:

PostgreSQL. Таблицы: users (user_id, registered_at),
orders (order_id, user_id, created_at, amount).

Построй когортный анализ retention по месяцам.
Когорта = месяц регистрации.
Показать retention за 0, 1, 2, 3 месяца после регистрации.
Период: пользователи, зарегистрированные в Q3 2024.

ChatGPT сгенерирует CTE с определением когорт, джойн с заказами, расчёт retention и разворот в матрицу. Останется только проверить и запустить.

Задача 2: Оконные функции для ранжирования

ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD — синтаксис легко забыть, особенно комбинацию PARTITION BY и ORDER BY.

Промпт:

PostgreSQL. Таблица orders (order_id, user_id, amount, created_at).

Для каждого пользователя найти:
1. Сумму первого заказа
2. Сумму последнего заказа
3. Разницу между последним и первым заказом
4. Общее количество заказов

Вместо того чтобы вспоминать, как писать FIRST_VALUE и LAST_VALUE, получаете готовый запрос за секунды.

Задача 3: Расчёт метрик с накоплением

Running total, скользящие средние, накопительные суммы — частые задачи в отчётах.

Промпт:

PostgreSQL. Таблица daily_revenue (date, revenue).

Добавь к каждой строке:
1. Накопительную сумму revenue с начала месяца
2. Скользящее среднее за 7 дней
3. Сравнение с тем же днём прошлой недели (% изменения)

Задача 4: Сложные условия фильтрации

Когда условий много и они зависят друг от друга, легко запутаться в скобках.

Промпт:

PostgreSQL. Таблица users (user_id, plan, status, last_login, signup_date).

Найти пользователей, которые:
- НА премиум плане (plan = 'premium')
- И (не заходили больше 30 дней ИЛИ статус 'churned')
- НО зарегистрировались больше 3 месяцев назад
- И это НЕ корпоративные аккаунты (plan != 'enterprise')

ChatGPT правильно расставит скобки и операторы AND/OR.

Задача 5: Pivot таблицы

Развернуть строки в столбцы — задача с неочевидным синтаксисом в большинстве диалектов SQL.

Промпт:

PostgreSQL. Таблица sales (product_id, month, amount).

Разверни данные так, чтобы:
- Строки = product_id
- Столбцы = месяцы (Jan, Feb, Mar, Apr)
- Значения = сумма amount

Задача 6: Работа с датами

Каждый диалект SQL имеет свои функции для дат. ChatGPT знает их все.

Промпт:

PostgreSQL. Таблица events (event_id, event_time).

Для каждого события добавь:
- День недели (название)
- Номер недели в году
- Начало и конец текущей недели
- Разницу в днях до конца месяца

4. Оптимизация запросов: что ChatGPT может и не может

Оптимизация SQL — сложная тема. ChatGPT может помочь, но с ограничениями.

Вот что он делает хорошо:

  • Предлагает добавить индексы на колонки в WHERE и JOIN

  • Замечает очевидные антипаттерны (SELECT * в подзапросах, лишние DISTINCT)

  • Предлагает переписать коррелированные подзапросы в JOIN

  • Советует использовать CTE вместо вложенных подзапросов для читаемости

Чего он не может:

  • Увидеть реальный план выполнения запроса (EXPLAIN ANALYZE)

  • Знать статистику распределения данных в таблицах

  • Учесть специфику вашего сервера и его настроек

  • Понять, какие индексы уже существуют

Правильный подход: получите запрос от ChatGPT, запустите EXPLAIN ANALYZE, скопируйте результат обратно в ChatGPT и попросите проанализировать.

Промпт для оптимизации:

Вот мой запрос PostgreSQL:
[вставить запрос]

Вот результат EXPLAIN ANALYZE:
[вставить план выполнения]

Запрос работает 45 секунд, нужно ускорить до 5.
Что можно оптимизировать?

Теперь ChatGPT видит, где узкое место: Seq Scan вместо Index Scan, плохая оценка строк, дорогие Hash Join. И может дать конкретные рекомендации.

5. Как ChatGPT помогает с анализом результатов

SQL — это только половина работы аналитика. Вторая половина — понять, что означают полученные данные, найти инсайты, сформулировать выводы.

ChatGPT отлично справляется с интерпретацией данных, если правильно задать контекст.

Пример 1: Анализ воронки

Вы получили данные по конверсии:

ЭтапПользователиКонверсия
Посетили сайт100,000100%
Зарегистрировались15,00015%
Начали trial8,00053%
Оплатили1,20015%

Промпт:

Я аналитик SaaS-продукта. Вот данные по воронке за Q4:
[вставить таблицу]

Средние показатели по рынку:
- Регистрация: 10-20%
- Trial activation: 40-60%
- Trial to paid: 20-30%

Проанализируй воронку. Где узкие места?
Какие гипотезы можно выдвинуть?

ChatGPT заметит, что конверсия из trial в оплату (15%) ниже рынка (20-30%) и предложит гипотезы: проблемы с онбордингом, непонятная ценность, слишком короткий trial.

Пример 2: Сравнение когорт

Вы посчитали retention для разных когорт:

КогортаM0M1M2M3
Июль 2024100%45%32%28%
Август 2024100%52%41%35%
Сентябрь 2024100%58%48%42%

Промпт:

Данные retention по когортам:
[вставить таблицу]

В августе запустили новый онбординг.
В сентябре добавили email-напоминания.

Какие выводы можно сделать? Какой из запусков
дал больший эффект? Какие дополнительные данные
помогли бы подтвердить гипотезы?

ChatGPT проанализирует динамику, заметит улучшение и предложит дополнительные срезы для проверки (по каналам привлечения, по устройствам, A/B тесты).

6. Ошибки ChatGPT и как их ловить

ChatGPT уверенно генерирует неправильный код. Он не знает, что ошибается, и не предупредит вас. Это называется "галлюцинации" — модель выдумывает то, чего не существует.

Типичные ошибки:

Тип ошибкиПримерКак поймать
Несуществующие функцииDATEADD в PostgreSQL (есть только в SQL Server)Запустить запрос — получить ошибку синтаксиса
Неправильные имена полейИспользует user_id вместо customer_idСверить со схемой таблицы перед запуском
Логические ошибкиLEFT JOIN вместо INNER JOIN меняет смыслПроверить результат на тестовых данных
Пропущенные условияЗабыл исключить тестовых пользователейПеречитать промпт и сверить с запросом
Неправильная агрегацияCOUNT(*) вместо COUNT(DISTINCT user_id)Проверить логику подсчёта вручную

Золотое правило: никогда не запускайте запрос от ChatGPT на продакшн-базе без проверки.

Чек-лист проверки запроса:

  1. Прочитайте запрос целиком — понимаете ли вы, что он делает?

  2. Сверьте имена таблиц и полей со схемой базы

  3. Проверьте типы JOIN — правильно ли выбраны?

  4. Убедитесь, что все условия из промпта попали в WHERE

  5. Запустите на небольшой выборке (добавьте LIMIT 100)

  6. Проверьте результат на здравый смысл

Если результат выглядит странно — не доверяйте ChatGPT. Разберитесь сами или попросите его объяснить каждую часть запроса.

7. Продвинутые техники: создание промпт-шаблонов

Если вы регулярно решаете похожие задачи, создайте библиотеку промпт-шаблонов. Это экономит время и повышает качество результатов.

Шаблон для когортного анализа:

Диалект: [PostgreSQL/MySQL/ClickHouse]
Таблица пользователей: [имя], поля: [перечислить]
Таблица событий: [имя], поля: [перечислить]

Когорта определяется по: [месяц регистрации / источник / план]
Событие для retention: [заказ / вход / действие]
Период анализа: [Q3 2024]
Глубина анализа: [3 месяца / 6 месяцев / 12 месяцев]

Дополнительные фильтры:
- [исключить тестовых]
- [только мобильные]
- [только Россия]

Шаблон для воронки:

Диалект: [PostgreSQL/MySQL/ClickHouse]
Таблица событий: [имя], поля: [перечислить]

Этапы воронки (в порядке):
1. [событие] — [условие]
2. [событие] — [условие]
3. [событие] — [условие]

Группировать по: [каналу / устройству / региону]
Период: [последние 30 дней]
Временное окно между этапами: [без ограничений / 7 дней]

Шаблон для RFM-анализа:

Диалект: [PostgreSQL]
Таблица заказов: [имя], поля: [перечислить]

Параметры RFM:
- Recency: дней с последнего заказа, границы сегментов [30, 90, 180]
- Frequency: количество заказов, границы [1, 3, 10]
- Monetary: общая сумма, границы [1000, 5000, 20000]

Период анализа: [последний год]
Исключить: [отменённые заказы, тестовые пользователи]

8. Работа с ошибками и итерации

Редко получается идеальный запрос с первого раза. Умение итерировать с ChatGPT — важный навык.

Сценарий 1: Синтаксическая ошибка

Запрос не выполняется. Скопируйте ошибку в ChatGPT:

Запрос выдаёт ошибку:
ERROR: column "user_id" must appear in the GROUP BY clause
or be used in an aggregate function

Исправь запрос.

ChatGPT поймёт проблему и добавит нужное поле в GROUP BY или обернёт в агрегатную функцию.

Сценарий 2: Неправильные результаты

Запрос работает, но данные странные:

Запрос вернул 0 строк, хотя данные точно есть.
Вот запрос: [вставить]
Вот структура таблицы: [вставить]

Что не так?

ChatGPT проанализирует условия WHERE, JOIN и найдёт, почему фильтрация отсекает все строки.

Сценарий 3: Запрос слишком медленный

Запрос работает 5 минут на таблице в 10 млн строк.
Вот запрос: [вставить]
Вот EXPLAIN ANALYZE: [вставить]

Как ускорить? Какие индексы создать?

Сценарий 4: Нужна модификация

Запрос работает. Теперь добавь:
1. Фильтр по дате (только последние 30 дней)
2. Группировку по каналу привлечения
3. Сортировку по убыванию суммы

ChatGPT сохранит контекст предыдущего запроса и добавит изменения.

9. ChatGPT для документации и обучения

Помимо написания запросов, ChatGPT полезен для понимания чужого кода и обучения.

Объяснение сложного запроса

Получили запрос от коллеги на 100 строк. Нужно понять, что он делает:

Объясни этот SQL-запрос шаг за шагом.
Что делает каждый CTE?
Какой итоговый результат?

[вставить запрос]

ChatGPT разобьёт запрос на части и объяснит каждую человеческим языком.

Изучение новых концепций

Объясни на простом примере, как работает
QUALIFY в SQL. Когда его использовать вместо
подзапроса с WHERE?
Покажи 5 примеров использования оконной функции
NTILE(). Для каких бизнес-задач она полезна?

Сравнение подходов

Какие есть способы посчитать медиану в PostgreSQL?
Сравни по производительности и синтаксису.
Какой способ лучше для таблицы в 100 млн строк?

10. Ограничения и альтернативы

ChatGPT — не единственный инструмент. И не всегда лучший.

Когда ChatGPT не подходит:

  • Конфиденциальные данные — нельзя отправлять структуру базы или реальные данные в публичный ChatGPT

  • Специфичные базы данных — редкие диалекты SQL он знает хуже

  • Критичная оптимизация — нужен реальный DBA с доступом к серверу

Альтернативы:

ИнструментОсобенностиКогда использовать
GitHub CopilotИнтеграция с IDE, видит контекст файлаЕсли пишете SQL в VS Code или DataGrip
Claude (Anthropic)Лучше работает с длинным контекстомДля очень сложных запросов с большим контекстом
Локальные LLMДанные не уходят наружуДля работы с конфиденциальными данными
BI-инструменты с AIЗнают вашу схему данныхMetabase, Looker с AI-функциями

Для конфиденциальных проектов рассмотрите ChatGPT Enterprise или API с отключённым обучением на ваших данных.

11. Практический воркфлоу: как встроить ChatGPT в работу

Вот как может выглядеть типичный рабочий процесс аналитика с ChatGPT:

Шаг 1: Формулировка задачи

Получаете запрос от продакт-менеджера: «Нужны данные по retention для презентации инвесторам».

Шаг 2: Составление промпта

Открываете шаблон для когортного анализа, заполняете параметры: структура таблиц, период, фильтры, нужные срезы.

Шаг 3: Генерация запроса

Отправляете промпт в ChatGPT, получаете SQL-код.

Шаг 4: Проверка

Читаете запрос, сверяете со схемой базы, запускаете с LIMIT 100.

Шаг 5: Итерации

Если что-то не так — отправляете ошибку или результат обратно в ChatGPT, уточняете.

Шаг 6: Анализ результатов

Получили данные. Отправляете таблицу в ChatGPT с просьбой найти паттерны и сформулировать выводы.

Шаг 7: Документация

Просите ChatGPT добавить комментарии к запросу для коллег.

Весь процесс занимает 15-20 минут вместо часа-двух ручной работы.

12. Что запомнить

ChatGPT — мощный инструмент для аналитика, но не замена знаниям SQL. Он усиливает ваши навыки, а не заменяет их.

Главные правила:

  • Всегда указывайте диалект SQL в промпте

  • Описывайте структуру таблиц — ChatGPT не знает вашу базу

  • Формулируйте задачу конкретно — размытый промпт = размытый результат

  • Никогда не запускайте запрос без проверки

  • Используйте ChatGPT для итераций — ошибки и уточнения это нормально

  • Создавайте шаблоны промптов для типовых задач

Где ChatGPT экономит больше всего времени:

  • Оконные функции и сложные агрегации

  • Когортный анализ и retention

  • Pivot-таблицы и работа с датами

  • Объяснение и документирование чужого кода

  • Интерпретация результатов и поиск инсайтов

Аналитик, который умеет эффективно использовать AI-инструменты, делает за день то, на что раньше уходила неделя. Это не магия — это новый стандарт эффективности, к которому стоит адаптироваться уже сейчас.

А лучшие вакансии для аналитиков ищите на hirehi.ru