Перейти к содержимому
PraktickAI
КурсыДля командУслугиДокументацияБлог
КурсыДля командУслугиДокументацияБлог
ГлавнаяКурсыИИ для данных и аналитикиSQL с помощью ИИ
Предыдущий урокСледующий урок
Урок 2 из 730 мин

SQL с помощью ИИ

Перейти к разделу
  • SQL без заучивания синтаксиса
  • Как описать запрос к данным
  • Основные паттерны SQL
  • Фильтрация и сортировка
  • Агрегации (суммы, средние, подсчёты)
  • JOIN-ы (объединение таблиц)
  • Оконные функции
  • Валидация SQL, сгенерированного ИИ
  • Продвинутые техники

SQL без заучивания синтаксиса

SQL — это язык для работы с базами данных, основа аналитической работы. Проблема в том, что освоение синтаксиса SQL занимает месяцы, и даже опытные аналитики ищут правильный способ написать сложный запрос. ИИ меняет это: опишите, что хотите узнать, — и ИИ напишет SQL за вас.

Вам не нужно знать SQL, чтобы попросить ИИ написать SQL-запрос. Достаточно знать, какие данные у вас есть (какие таблицы, какие столбцы) и что вы хотите узнать. Синтаксис, JOIN-ы, агрегации и всё остальное — забота ИИ.

Как описать запрос к данным

Чтобы ИИ сгенерировал правильный SQL, ему нужны три вещи: структура вашей базы данных (какие таблицы и столбцы у вас есть), что вы хотите узнать (бизнес-требование) и какие фильтры или условия применить.

Промпт для SQL: «У меня есть таблица orders со столбцами: id, customer_id, product_id, amount, created_at. И таблица customers со столбцами: id, name, email, country. Напиши SQL-запрос, который показывает топ-10 клиентов по суммарным тратам за последние 12 месяцев, включая имя и количество заказов.»

-- AI generates something like:
SELECT 
    c.name,
    c.email,
    COUNT(o.id) AS order_count,
    SUM(o.amount) AS total_spent
FROM orders o
JOIN customers c ON o.customer_id = c.id
WHERE o.created_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY c.id, c.name, c.email
ORDER BY total_spent DESC
LIMIT 10;

Основные паттерны SQL

Существует несколько паттернов SQL, которые покрывают 90% случаев использования. Их не нужно заучивать — достаточно знать, что они существуют, чтобы лучше формулировать запросы к ИИ. Но понимание помогает проверять результаты.

Фильтрация и сортировка

-- 'Show orders over $100 from the last month,
--  sorted by newest first'
SELECT *
FROM orders
WHERE amount > 100
  AND created_at >= CURRENT_DATE - INTERVAL '1 month'
ORDER BY created_at DESC;

Агрегации (суммы, средние, подсчёты)

-- 'How many orders and how much revenue did we have
--  each month in 2025?'
SELECT 
    DATE_TRUNC('month', created_at) AS month,
    COUNT(*) AS order_count,
    SUM(amount) AS total_revenue,
    AVG(amount) AS avg_order_value
FROM orders
WHERE created_at >= '2025-01-01'
GROUP BY DATE_TRUNC('month', created_at)
ORDER BY month;

JOIN-ы (объединение таблиц)

-- 'For each product show the name, category,
--  total sales and number of customers'
SELECT 
    p.name AS product_name,
    p.category,
    SUM(o.amount) AS total_sales,
    COUNT(DISTINCT o.customer_id) AS unique_customers
FROM orders o
JOIN products p ON o.product_id = p.id
GROUP BY p.id, p.name, p.category
ORDER BY total_sales DESC;

Оконные функции

Оконные функции — продвинутая концепция SQL, с которой ИИ справляется отлично. Они используются для вычислений «внутри группы» — например, для сравнения каждого клиента со средним значением по его региону.

-- 'For each customer show their monthly spending
--  and the average for their region in the same month'
SELECT 
    c.name,
    c.country,
    DATE_TRUNC('month', o.created_at) AS month,
    SUM(o.amount) AS customer_spending,
    AVG(SUM(o.amount)) OVER (
        PARTITION BY c.country, 
        DATE_TRUNC('month', o.created_at)
    ) AS region_avg
FROM orders o
JOIN customers c ON o.customer_id = c.id
GROUP BY c.id, c.name, c.country, 
         DATE_TRUNC('month', o.created_at)
ORDER BY month, c.country;

Валидация SQL, сгенерированного ИИ

ИИ генерирует SQL, который в большинстве случаев правильный, но не всегда. Перед запуском в продакшне нужно проверять каждый запрос. Есть простые правила, которые помогают.

  • Проверяйте имена таблиц и столбцов — ИИ иногда их выдумывает, если не знает точную схему
  • Проверяйте условия JOIN — плохой JOIN может умножить строки и исказить результаты
  • Тестируйте на небольшом датасете — добавьте LIMIT 10 перед запуском на всей базе
  • Просите ИИ объяснить — «Объясни шаг за шагом, что делает этот запрос»
  • Сравнивайте с ожидаемыми результатами — если знаете примерный ответ, проверьте его

Золотое правило: никогда не запускайте сгенерированные ИИ запросы с DELETE, UPDATE или DROP на продакшн-базе без проверки. Для аналитических SELECT-запросов риск низкий, но запросы на изменение данных могут нанести необратимый ущерб.

Продвинутые техники

Освоив основные паттерны, вы можете просить ИИ о более сложных анализах. Просто опишите бизнес-вопрос, и ИИ объединит JOIN-ы, подзапросы, оконные функции и CTE в один запрос.

Промпт для сложного запроса: «У меня есть таблицы orders, customers и products. Хочу видеть: для каждой категории продуктов — ежемесячную выручку, процент роста месяц к месяцу и накопленную выручку с начала года. Включай только клиентов с более чем 3 заказами.»

-- AI generates CTEs + window functions:
WITH active_customers AS (
    SELECT customer_id
    FROM orders
    GROUP BY customer_id
    HAVING COUNT(*) > 3
),
monthly_sales AS (
    SELECT 
        p.category,
        DATE_TRUNC('month', o.created_at) AS month,
        SUM(o.amount) AS revenue
    FROM orders o
    JOIN products p ON o.product_id = p.id
    WHERE o.customer_id IN (
        SELECT customer_id FROM active_customers
    )
    AND o.created_at >= DATE_TRUNC('year', CURRENT_DATE)
    GROUP BY p.category, DATE_TRUNC('month', o.created_at)
)
SELECT 
    category,
    month,
    revenue,
    ROUND(
        (revenue - LAG(revenue) OVER (
            PARTITION BY category ORDER BY month
        )) * 100.0 / NULLIF(LAG(revenue) OVER (
            PARTITION BY category ORDER BY month
        ), 0), 1
    ) AS growth_pct,
    SUM(revenue) OVER (
        PARTITION BY category 
        ORDER BY month
    ) AS ytd_revenue
FROM monthly_sales
ORDER BY category, month;
Сгенерируйте SQL для вашего случая

Опишите ИИ одну из этих ситуаций (или свою собственную) и попросите его сгенерировать SQL: 1. «У меня интернет-магазин с таблицами orders, customers и products. Хочу видеть топ-5 клиентов, потративших больше всего за последний квартал, включая их любимую категорию продуктов.» 2. «У меня есть таблица events со столбцами user_id, event_type, created_at. Хочу видеть дневное количество уникальных пользователей, совершивших хотя бы одно действие типа purchase.» 3. «У меня есть таблица employees со столбцами name, department, salary, hire_date. Хочу сравнение средней зарплаты по отделам и сколько людей в каждом отделе получают ниже и выше среднего.» Для каждого запроса попросите ИИ объяснить, что делает каждая часть.

Подсказка

Если у вас есть доступ к базе данных, попробуйте запустить запрос. Если нет — попросите ИИ создать тестовые данные (CREATE TABLE + INSERT INTO) и запустите запрос в онлайн-редакторе SQL, например db-fiddle.com.

Ключевые выводы
  • ИИ генерирует SQL из описаний на естественном языке — вам не нужно знать синтаксис
  • Опишите ИИ структуру базы данных (таблицы, столбцы) и бизнес-требование
  • Основные паттерны: фильтрация, агрегации, JOIN-ы, оконные функции покрывают 90% потребностей
  • Всегда валидируйте SQL перед запуском — проверяйте имена, условия JOIN, тестируйте на небольших датасетах
  • Никогда не запускайте DELETE/UPDATE/DROP из ИИ без тщательной проверки

В следующем уроке мы погружаемся в ИИ для таблиц — техника, которая даёт вам явное преимущество. Откройте полный курс и продолжайте прямо сейчас.

Предыдущий урок
LinkedInX / Twitter

2/7 завершено — продолжайте!

  • SQL без заучивания синтаксиса
  • Как описать запрос к данным
  • Основные паттерны SQL
  • Фильтрация и сортировка
  • Агрегации (суммы, средние, подсчёты)
  • JOIN-ы (объединение таблиц)
  • Оконные функции
  • Валидация SQL, сгенерированного ИИ
  • Продвинутые техники

PraktickAI

AI-обучение и консалтинг для технических команд

КурсыДля командУслугиДокументацияБлог
karel@praktickai.appLinkedIn

© 2026 PraktickAI — SkyVisual s.r.o. Все права защищены. Политика конфиденциальности · Условия использования · Порядок рассмотрения жалоб