2023-02-06 11:55:11
~80% начинающих аналитиков не знают порядок выполнения SQL запроса на собеседовании.Это число я получил на основе проведения 200+ собеседований кандидатов на позицию продуктового аналитика и mock-интервью со своими менти.
Задумайтесь на минутку об одном из последних своих запросов. В каком порядке у него выполняются операторы SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY и LIMIT?
Правильный порядок будет следующим:
1. FROM (а не SELECT) — так как сначала “машине” нужно определить из какой таблицы брать данные. Без этого, остальные операторы не имеют никакого смысла: над какими данными тогда проводить дальнейшие манипуляции?
2. WHERE — ведь зачем тянуть и выполнять вычисления над записями, которые не релевантны? Можем сразу же их отфильтровать;
3. GROUP BY – сгруппируем релевантные записи;
4. HAVING – исключим группы, которые не релевантны.
5. SELECT – и только теперь выберем поля, которые выведем на экран. Лишние, опять же, ни к чему;
6. ORDER BY – упорядочим результат для наглядности;
7. LIMIT – выведем только N первых строк, если не нужны сразу все.
Зачем знать порядок SQL запроса?
Понимание того, как и в каком порядке выполняются запросы, помогает отлаживать случаи, когда запрос выдает не то, что ожидалось. А также оптимизировать скорость их работы.
А теперь вопрос знатокам. Как в этот порядок вписываются: (a) JOIN, (b) UNION, (c) DISTINCT, (d) оконная функция, (e) агрегационная функция, (f) WITH CUBE?
660 viewsПавел Бухтик, 08:55