Как стать автором
Обновить

Комментарии 11

SELECT customer_id, product, amount FROM sales GROUP BY customer_id;

а тут точно ошибка?

Да. То что некоторые базы данных разрешают такое - нарушение стандарта.

А аналитикам не доступно базовое понимание построения SQL запросов? Или там теперь без знаний вообще берут?

Недоступно, увы. Тут имеется не одна и не две статьи класса "SQL для аналитика", написанные аналитиками - все, как под копирку...

По-моему, аналитики в SQL напоминают тех самых слепцов, которые на ощупь пытались понять, что есть слон.

Не то чтобы берут, но пытаются придти. Наверное, три четверти собеседований с кандидатами заканчивается словами "не смог в SQL".

Записки джуна составленные из ответов гпт?

Среди логических ошибок забыли еще один подкласс - недетерминированный результат. Это когда от запуска к запуску результат может различаться, хотя ни данные, ни запрос не изменились.

Возникает обычно из-за отсутствия явно указанной сортировки или при указании неполного набора полей для сортировки.

SELECT *FROM salesJOIN customers;

Не во всех СУБД это ошибочный запрос, если реально нужно декартово произведение.

а кое где это будет соединение по ключу (если он есть)

Ну и то, и другое опять-таки расширение синтаксиса в конкретной СУБД, отклонение от стандарта. JOIN - это сокращённая форма INNER JOIN, и наличие ON clause по стандарту обязательно. Автоподстановка ON TRUE для получение декартова произведения или ON t1.pk1 = t2.pk2 для связывания по первичному ключу - это фичи конкретных диалектов.

На самом деле типов ошибок всего три.

Алгоритмическая - неправильно выбран алгоритм получения конечного результата. Проблема, например, неправильно выбранного типа связывания - обычно именно отсюда. Экзотика, вроде неправильно выбранных исходных данных (и такое бывает) - тоже отсюда.

Логическая - неправильно реализован правильно выбранный алгоритм. например, проблема неправильно выбранного типа связывания - может быть и отсюда.

Синтаксическая - сформирован некорректный SQL-текст. Начиная от опечаток и кончая просто незнанием правильного синтаксиса в конкретном диалекте SQL.

Проблемы с правами доступа и производительностью вообще не являются ошибками SQL.

А "ошибки работы с NULL", использование некорректного общего синтаксиса и прочие проблемы того же рода - это просто незнание основ, ну или другими словами безграмотность в соответствующей области знаний.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации