Atterna
RUEN
Получить доступ

SQL от нейросети — 6 ошибок, которые выполняются без ошибки (и как их поймать)

На этой странице · 8

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

1. JOIN, который завышает сумму

Вы просите выручку, ассистент соединяет заказы с товарами и суммирует стоимость заказа. Каждый заказ повторяется по разу на каждый товар.

Практика · вопрос 1 из 6

orders.idamountтоваров в заказе
1€503
2€301
SELECT SUM(o.amount)
FROM orders o
JOIN items i ON i.order_id = o.id;

Что вернёт этот запрос?

Готовим практику…

На учебном маркетплейсе Atterna именно такой запрос превращает €552 645 оплаченных заказов в €1 239 938. Ошибки нет — число просто больше чем вдвое. Спросите в ответ: «Не суммируется ли какая-то сумма после соединения с таблицей, где на заказ приходится несколько строк?»

2. Строки вместо людей

Маркетинг спрашивает «Сколько клиентов сделали заказ?», и ассистент пишет такой запрос:

Практика · вопрос 2 из 6

SELECT COUNT(buyer_id)
FROM orders
WHERE status = 'paid';

Маркетинг просил число клиентов. Что на самом деле считает этот запрос?

Готовим практику…

Спросите в ответ: «Это клиенты или заказы? Для людей нужен COUNT(DISTINCT …)».

3. LEFT JOIN, который отменил WHERE

Ассистенты часто ставят условие на присоединённую таблицу в WHERE. Строки, которые LEFT JOIN должен был сохранить, исчезают.

Практика · вопрос 3 из 6

SELECT u.id, COUNT(o.id) AS paid_orders
FROM users u
LEFT JOIN orders o ON o.buyer_id = u.id
WHERE o.status = 'paid'
GROUP BY u.id;

Попадут ли в результат пользователи без оплаченных заказов — с нулём?

Готовим практику…

Спросите в ответ: «Может, это условие должно быть в ON, чтобы строки без пары остались с нулём?»

4. NULL тихо меняет среднее

Пустые значения не вызывают ошибок. Они меняют то, по чему считается агрегат.

Практика · вопрос 4 из 6

productrating
Wireless headphones4.6
Set of wine glasses4.5
Scented candleNULL
Travel mug4.8
SELECT AVG(rating) FROM catalog;

Что вернёт запрос?

Готовим практику…

Спросите в ответ: «Сколько строк с NULL в этом столбце и как их учитывать — как ноль, исключить или показать отдельно?»

5. Группировка по отметке времени

Вы просите заказы по дням, и ассистент группирует по колонке со временем заказа:

Практика · вопрос 5 из 6

SELECT created_at, COUNT(*)
FROM orders
GROUP BY created_at;

Нужны были заказы по дням. Что получится?

Готовим практику…

6. Верный запрос, который отвечает не на тот вопрос

Последняя ошибка вообще не в SQL. Запрос правильный — неправилен вывод, ради которого его запустили.

Практика · вопрос 6 из 6

Томас · маркетинг

Заказы с AUTUMN20 в среднем в 2,5 раза больше, чем без него! Можно вписать в декабрьский план «AUTUMN20 увеличивает корзину»?

-- запрос верный
заказы с AUTUMN20   €91,81 в среднем
без кода            €36,60 в среднем

Запрос верный, числа настоящие. Что проверить первым?

Готовим практику…

Здесь помощи AI уже не хватает: ассистент посчитает оба средних, но может не спросить, кто вообще мог воспользоваться кодом, пока этого не спросите вы.

Двухминутная проверка перед тем, как использовать SQL от AI

  1. Скажите, что значит одна строка каждой таблицы и одна строка результата.
  2. Посмотрите на каждый JOIN: может ли он повторить строку, которую вы потом суммируете или считаете?
  3. Посмотрите на каждый фильтр: не стоит ли условие на LEFT JOIN-таблицу в WHERE вместо ON?
  4. Проверьте подсчёты: считает ли COUNT то, о чём спрашивали, и нужен ли DISTINCT?
  5. Проверьте NULL и даты: что с пропусками и закончился ли последний период?
  6. Читайте вывод отдельно от запроса: подтверждает ли число утверждение или просто стоит рядом?

Вставьте ответ на английском или стандартный SQL в проверку ответов AI: она отмечает JOIN, повторяющие строки, LEFT JOIN, отменённый WHERE, = NULL и незаконченные периоды и пишет уточняющий вопрос за вас. Чтобы выработать привычку на настоящем беспорядке — отменённые заказы, возвраты, корзины от нескольких продавцов, — Start учит SQL с нуля (дни 1–2 без аккаунта, все десять — бесплатно с аккаунтом), а кейс 1 ставит перед вами убедительное, но неверное число.

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

Можно ли доверять SQL, который написал ChatGPT или другой ассистент?

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

Какая ошибка в SQL от AI встречается чаще всего?

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

Как проверить SQL от AI, если я только учу SQL?

Попросите ассистента сказать, что значит одна строка результата, показать число строк до и после каждого JOIN и объяснить каждый фильтр. Потом сравните итог с простым запросом к одной таблице. Наша проверка прямо в браузере отмечает типичные шаблоны, например JOIN, который повторяет строки; запустить запрос на ваших данных она не может.

Заменит ли AI необходимость учить SQL?

AI ускоряет написание SQL, и от этого умение его читать становится важнее. Остаётся работа, которую не отдать: решить, что считать, поймать запрос, который отвечает не на тот вопрос, и объяснить, чего число сказать не может.

Ответов: 0 из 6

Вернитесь к оставшимся вопросам выше.

Каждый ответ открывает объяснение, в том числе неверный.

Бесплатный аккаунт

Попрактикуйся бесплатно

Бесплатный аккаунт откроет практические уроки на реалистичном маркетплейсе.

  • Все 10 дней курса SQLОт первой таблицы до JOIN и оконных функций
  • Эпизод 1 MeridianЦелая неделя аналитика: рекорд, которого не было
  • Первый проект в портфолиоГотовые работы — проектом для GitHub, с твоим SQL и графиками
  • Прогресс на любом устройствеШпаргалка и карточки повторения всегда с тобой
Создать бесплатный аккаунт Бесплатно · 30 секунд · без картыУже есть аккаунт? Войти

Примеры — из Meridian, вымышленного учебного маркетплейса Atterna.