SQL от нейросети — 6 ошибок, которые выполняются без ошибки (и как их поймать)
На этой странице · 8
Опасен не запрос от AI, который падает, а тот, что выполняется и отвечает на чуть другой вопрос. Шесть таких — каждый можно решить прямо здесь:
1. JOIN, который завышает сумму
Вы просите выручку, ассистент соединяет заказы с товарами и суммирует стоимость заказа. Каждый заказ повторяется по разу на каждый товар.
Практика · вопрос 1 из 6
| orders.id | amount | товаров в заказе |
|---|---|---|
| 1 | €50 | 3 |
| 2 | €30 | 1 |
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
| product | rating |
|---|---|
| Wireless headphones | 4.6 |
| Set of wine glasses | 4.5 |
| Scented candle | NULL |
| Travel mug | 4.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
- Скажите, что значит одна строка каждой таблицы и одна строка результата.
- Посмотрите на каждый JOIN: может ли он повторить строку, которую вы потом суммируете или считаете?
- Посмотрите на каждый фильтр: не стоит ли условие на LEFT JOIN-таблицу в WHERE вместо ON?
- Проверьте подсчёты: считает ли COUNT то, о чём спрашивали, и нужен ли DISTINCT?
- Проверьте NULL и даты: что с пропусками и закончился ли последний период?
- Читайте вывод отдельно от запроса: подтверждает ли число утверждение или просто стоит рядом?
Вставьте ответ на английском или стандартный 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 и графиками
- Прогресс на любом устройствеШпаргалка и карточки повторения всегда с тобой
Примеры — из Meridian, вымышленного учебного маркетплейса Atterna.