Как составить 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-запрос
Скопируйте запрос целиком и задайте конкретные вопросы вместо общего «объясни». Рабочий набор:
- «Опиши по шагам, что делает каждый CTE и в каком порядке они выполняются».
- «Что означает одна строка в результате? Сформулируй словами, как подпись к таблице».
- «Перечисли все условия фильтрации простым языком, включая те, что спрятаны в JOIN ON».
- «Перепиши на CTE с понятными именами, логику не меняй».
- «Где здесь можно получить дубли или потерять строки? Покажи на примере».
Последний пункт важнее остальных. Классические места, где отчёт начинает врать: 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 я не знаю?
Сверьте итог с числом, которое знаете из другого источника, проверьте две-три строки вручную и сравните количество строк до и после соединения таблиц.
Можно ли давать нейросети реальные данные клиентов?
Лучше обезличить: заменить почты, телефоны и имена на выдуманные. Структура и типы данных при этом сохраняются, и запрос останется корректным.