Порядок выполнения SQL-запроса в СУБД

Вещает 🤓 Выпускник МФТИ 🔝 Team Lead Product Analyst Tinkoff, ex-InDrive, Ozon и Рук аналитики Фоксфорд и Нетология - @Analyst_Vladimir Канал про карьеру и обучение Аналитике данных и Продуктовой аналитике ЧАТ для общения - https://t.me/DataNewGoldchat

sqlпорядок выполнениясубд

Вчера проходил собеседование на тим лида продуктовой аналитики, и столкнулся с очень простым вопросом по SQL, но в тоже время на подумать 🤔

Вопрос следующий:

Есть список ключевых слов в порядке написания запроса SQL

  1. SELECT
  2. DISTINCT
  3. FROM
  4. JOIN
  5. WHERE
  6. GROUP BY
  7. HAVING
  8. LIMIT

Расставить в порядке выполнения самой СУБД после запуска запроса

Почему решил поделиться: сам я в работе при выполнении SQL запросов задумываюсь об этом только, когда нужно оптимизировать запрос. Но не всегда мои запросы состоят из всего вышеперечисленного, поэтому вопрос для меня оказался нетривиальным, но с вопросом я справился с 1 ошибкой) Помогло мне погружение в нюансы работы с СУБД во время преподавания SQL для начинающих аналитиков — писал про это выше. Что еще раз подтверждает: лучше всего ты понимаешь тему, когда не сам разобрался, а еще и рассказал другому и он понял 👍

Набросайте свои решения ниже в комментах, а я поделюсь правильным ответом сразу, как только мы наберем под этим постом 100+ ❤️‍🔥

Дискуссия

Data New Gold Chat | Analyst_Vladimir
S
UNION объединит итоговые промежуточные таблицы, то есть уже после выражений SELECT и DISTINCT каждой из таблиц
с этим согласен но тоже уточню про ORDER BY и LIMIT, что они идут после UNION Еще тоже важный момент с сортировкой: в результате UNION не гарантирован порядок без явного ORDER BY для всего объединенного результата
Data New Gold Chat | Analyst_Vladimir
Дмитрий
А потом спросить - а в кликхаусе?) Я очень долго привыкал к тому, что можно в select назвать поле, а потом обратиться к нему из where. Ну и можно в итоге сломаться на запросе типа select 1 as a, c+1 as c from (select 1 as c) where c=1
да-да с кликом свои приколы + знаю, что там можно с массивами работать, а вот про другие СУБД не рисерчил
S
Data New Gold Chat | Analyst_Vladimir
немного уточню: оконные функции выполняются после HAVING, но до SELECT. Они применяются к набору строк, полученному после группировки и фильтрации.
Да, это понимаю, но не так выразилась)
Data New Gold Chat | Analyst_Vladimir
S
Да, это понимаю, но не так выразилась)
я тебя понял 😉 но на всякий случай для ребят уточнил
Angelina
Data New Gold Chat | Analyst_Vladimir
А еще была задачка на алгоритмы в python, где мне поставили условие: "Алгоритм должен быть эффективней O(n**2)" Собесился не в Яндекс, поэтому активно к алгоритмам не готовился, но тк проводил собес яндексоид, то алгоритмы он дал))
То есть яндексоид, который дал задачку, работает не в Яндексе?
Data New Gold Chat | Analyst_Vladimir
Angelina
То есть яндексоид, который дал задачку, работает не в Яндексе?
ага собес я не в Яндекс проходил)
Ekaterina Shishkina
Maxim
А если в списке ещё добавить union и оконки? 😁
Макс , приходи к нам на собес , дадим )
Maxim
Ekaterina Shishkina
Макс , приходи к нам на собес , дадим )
Опять? 😱
Slava
А еще WINDOW нет) он после HAVING
Data New Gold Chat | Analyst_Vladimir
Slava
А еще WINDOW нет) он после HAVING
в следующем посте есть)
Присоединиться к обсуждению →

Читайте так же