Как составить SQL-запрос и прочитать выгрузку из базы без знания SQL

Порядок работы с нейросетью, при котором SQL-запрос запускается с первого раза, а выгрузка из базы превращается в понятные цифры.

Чтобы нейросеть выдала рабочий SQL, в первом же сообщении ей нужны три вещи: структура таблиц, диалект СУБД и точная формулировка результата. Дайте всё сразу — и запрос запустится без правок. Пропустите структуру — модель придумает имена колонок сама, и база вернёт ошибку.

Что вложить в первое сообщение

  • Структуру таблиц. Идеально — вывод CREATE TABLE или \d имя_таблицы. Подойдёт и список колонок с типами, скопированный из интерфейса базы.
  • Диалект и версию. PostgreSQL 15, MySQL 8, ClickHouse, SQLite, BigQuery — синтаксис дат и оконных функций в них разный.
  • Три-пять строк примера данных. По ним видно, что в поле status лежат русские слова, а в created_at — текст, а не timestamp.
  • Описание результата. Какие столбцы нужны, за какой период, с какой детализацией (по дням, неделям, менеджерам), как сортировать.
  • Ограничения. «Только SELECT, данные менять нельзя», «таблица на 40 млн строк, нужен фильтр по дате в первую очередь».

Пример постановки: «PostgreSQL 15. Таблицы: orders (id, user_id, created_at timestamptz, status text, total numeric), order_items (id, order_id, product_id, qty int, price numeric), users (id, email, city, registered_at). Нужна выручка по месяцам за прошлый год: месяц, число заказов, сумма total, средний чек. Учитывать только status = 'paid'. Сортировка по месяцу».

Если после запуска вылезла ошибка — копируйте её целиком вместе со строкой, на которой споткнулась база. Пересказ «не работает» заставит модель гадать. С текстом ошибки правка занимает одно сообщение.

Как уточнять запрос дальше

Работайте итерациями. Сначала простая версия без группировок, потом добавление разрезов: «теперь то же самое, но с разбивкой по городам из users», «добавь долю каждого города от общей суммы», «выведи только города, где больше 50 заказов». Просите модель после каждой правки объяснять одной строкой, что изменилось в логике — так вы поймаете момент, когда фильтр начал отрезать лишнее.

Как объяснить чужой SQL-запрос

Скопируйте запрос целиком и задайте конкретные вопросы вместо общего «объясни». Рабочий набор:

  1. «Опиши по шагам, что делает каждый CTE и в каком порядке они выполняются».
  2. «Что означает одна строка в результате? Сформулируй словами, как подпись к таблице».
  3. «Перечисли все условия фильтрации простым языком, включая те, что спрятаны в JOIN ON».
  4. «Перепиши на CTE с понятными именами, логику не меняй».
  5. «Где здесь можно получить дубли или потерять строки? Покажи на примере».

Последний пункт важнее остальных. Классические места, где отчёт начинает врать: LEFT JOIN, у которого условие по правой таблице ушло в WHERE и превратило соединение в INNER; join «один ко многим», после которого сумма по заказам задваивается; NOT IN со списком, где встречается NULL. Модель находит такие места, если прямо о них спросить.

Полезный приём для унаследованного кода: попросить составить список вопросов к автору запроса. Получите перечень мест, где логика неочевидна и нужно решение человека.

Разбор выгрузки: от CSV к выводам

Выгрузку можно приложить файлом или вставить фрагмент. Для большого файла дайте шапку, 20–30 строк и опишите общий объём — по этому куску модель поймёт форматы и предложит скрипт для полного файла.

Что просить в первую очередь:

  • Проверку качества. Дубли по ключу, пустые ячейки, даты в разных форматах, числа, записанные текстом с пробелами, отрицательные значения там, где их быть не должно.
  • Сводку. Итоги по группам, доли, динамику по периодам, топ и антитоп.
  • Аномалии. «Покажи строки, которые выбиваются из общей картины, и объясни, по какому признаку ты их выбрал».
  • Инструмент. Формулы для Google Sheets, скрипт на Python с pandas или готовый SQL, если выгрузку можно залить обратно в базу.

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

Проверки перед тем, как верить числу

  • Запустите запрос с LIMIT 100 и глазами сверьте пару строк с карточками в системе.
  • Сравните COUNT(*) до и после JOIN: выросло — появились дубли.
  • Сверьте итог с любым известным числом: выручкой за месяц из бухгалтерии, количеством клиентов из CRM.
  • UPDATE и DELETE, предложенные моделью, запускайте только внутри транзакции и сначала как SELECT с тем же WHERE.
  • Персональные данные обезличьте: замените реальные почты и телефоны на выдуманные, структура от этого не изменится.

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

Доступ к Claude из России

Подписка Claude Pro стоит 2 730 ₽ и действует 30 дней с активации. Карты российских банков Anthropic к оплате не принимает — подписку оформляем мы на ваш аккаунт, от вас нужна только почта, привязанная к Claude. Оплатить можно картой российского банка, по СБП или криптовалютой.

Заказ обычно выдаём за 15 минут в рабочее время, ежедневно с 10:00 до 22:00 МСК. Claude не открывается с российских IP — для доступа к сервису нужен VPN, с его настройкой помогаем бесплатно. Другие тарифы на нейросети собраны на витрине, история заказов и баллы видны в личном кабинете.

sellchatgpt.ru — независимый сервис, официальным представителем OpenAI, Anthropic и Google он не является.

Частые вопросы

Можно ли загрузить в чат всю выгрузку целиком?

Небольшой файл — да. Для большого дайте шапку и несколько десятков строк, опишите объём и попросите скрипт на Python или формулы, которые обработают файл у вас на компьютере.

Нейросеть написала запрос к таблице, которой у меня нет. Что делать?

Пришлите вывод CREATE TABLE по вашим таблицам и напишите: «используй только эти таблицы и колонки, ничего не домысливай». После этого модель перепишет запрос под вашу схему.

База вернула ошибку на сгенерированном запросе. Как исправить быстрее всего?

Скопируйте текст ошибки целиком, укажите СУБД и версию, приложите сам запрос. По тексту ошибки правка обычно занимает одно сообщение.

Как проверить, что запрос считает правильно, если SQL я не знаю?

Сверьте итог с числом, которое знаете из другого источника, проверьте две-три строки вручную и сравните количество строк до и после соединения таблиц.

Можно ли давать нейросети реальные данные клиентов?

Лучше обезличить: заменить почты, телефоны и имена на выдуманные. Структура и типы данных при этом сохраняются, и запрос останется корректным.

Ещё по теме