SQL-запит з опису задачі: від питання до коректного коду
Промпт для ШІ, що складає SQL-запит за описом задачі та структурою таблиць: пояснює логіку, називає припущення й підказує, як перевірити результат.
До чого цей промпт
Часто аналітик чи підприємець точно знає, яку цифру хоче побачити, але не пам’ятає, як правильно з’єднати таблиці й згрупувати дані. Цей промпт допомагає перейти від питання простими словами до готового SQL-запиту.
Важливо, що він працює не «навмання». Модель спершу уточнює недостатні деталі, потім пише запит із коментарями, перелічує припущення й пропонує перевірки. Тому ви бачите не просто код, а логіку, яку можна звірити з реальністю. Про роботу з даними більше в статті про ШІ для аналітики даних.
Промпт
Ти досвідчений аналітик даних і SQL-розробник. Допоможи скласти SQL-запит. Працюй лише з тим, що я надаю: не вигадуй назви таблиць і стовпців, яких немає в описі.
СУБД: [PostgreSQL / MySQL / SQLite / SQL Server / інша]
СТРУКТУРА ТАБЛИЦЬ (назви, стовпці, типи, зв’язки):
[вставте опис або CREATE TABLE]
ЗАДАЧА ПРОСТИМИ СЛОВАМИ:
[що треба отримати: які показники, за який період, з якими умовами]
Завдання:
1. Якщо опису бракує для однозначного запиту, спершу постав до трьох уточнювальних питань і зупинись.
2. Напиши запит, відформатований і з коментарями до кожного блоку (JOIN, фільтри, групування).
3. Поясни логіку простими словами: що робить кожна частина.
4. Окремо перелічи свої припущення (наприклад, як обробляються NULL, дублікати, часові пояси).
5. Запропонуй 2–3 перевірки, як переконатися, що результат правильний: контрольні суми, порівняння з відомим числом, вибірка рядків.
6. Якщо запит може бути повільним на великих таблицях, назви, які індекси чи зміни допоможуть.Текст у квадратних дужках замініть своїми даними.
Як використовувати
Вкажіть свою СУБД: синтаксис дат, рядків і обмеження вибірки в різних системах відрізняються. Структуру таблиць найкраще вставити як CREATE TABLE або список стовпців із типами й зв’язками.
Задачу опишіть так, як сказали б колезі: «скільки замовлень і яка сума по кожному місяцю за минулий рік, без скасованих». Запит спершу запустіть на копії бази або з обмеженням LIMIT і звірте з відомим числом, а вже потім використовуйте в роботі. Запити, що змінюють дані (UPDATE, DELETE), перевіряйте особливо уважно.
Приклад відповіді
Припущення: статус «скасовано» зберігається у стовпці status зі значенням 'cancelled'; суму рахуємо без податку.
SELECT date_trunc('month', created_at) AS month,
COUNT(*) AS orders,
SUM(total) AS revenue
FROM orders
WHERE status <> 'cancelled'
GROUP BY 1
ORDER BY 1;
Перевірка: сума по всіх місяцях має збігатися із загальним підсумком за період.
Це лише орієнтир за структурою: відповідь моделі щоразу трохи інакша.
Поради
- Не вставляйте в чат реальні персональні дані клієнтів: для складання запиту досить структури таблиць і вигаданих значень.
- Попросіть окремо версію запиту лише для читання, якщо задача пов’язана з оновленням чи видаленням даних.
- Якщо запит видав дивний результат, надішліть моделі кілька рядків вихідних даних і результат: так вона точніше знайде помилку в умовах.
- Для складних запитів попросіть розбити їх на кроки з CTE: їх легше перевіряти по одному.
Часті запитання
Чи можна запускати отриманий запит одразу на робочій базі?
Ні. Спершу перевірте його на копії або з обмеженням рядків і звірте результат із відомим числом. Запити, що змінюють дані, запускайте лише після резервної копії.
Що робити, якщо я не знаю точної структури бази?
Виконайте запит до службових таблиць вашої СУБД, щоб отримати список таблиць і стовпців, і вставте результат у промпт. Модель не повинна вгадувати назви: промпт прямо просить її цього не робити.
Чи підійде промпт для початківця в SQL?
Так. Крок із поясненням логіки простими словами допомагає зрозуміти, що робить кожна частина запиту, і поступово навчитися писати такі запити самостійно.