Друзья, всем привет! 👋🏻 На связи Паша, ваш куратор и специалист в мире Oracle. Давно ничего не писал в канал, пришло время исправиться 😉 На собеседованиях часто задают вопросы про CTE и WITH, поэтому сегодня решили немного поговорить о том, что это за конструкция, и как она выглядит в плане запроса. Итак, поехали 🤞🏻 Многие привыкли думать о CTE так: вынесли подзапрос в WITH, Oracle его один раз вычислил и потом просто использует готовый результат. Звучит логично… но не всегда так работает 🤔 Вот небольшой пример для разминки (типовая схема Order Entry): WITH top_orders AS ( SELECT o.* FROM oe.orders o WHERE o.order_date >= DATE '2024-01-01' ) SELECT c.cust_last_name, (SELECT COUNT(*) FROM top_orders t WHERE t.customer_id = c.customer_id) cnt_orders, (SELECT SUM(t.order_total) FROM top_orders t WHERE t.customer_id = c.customer_id) sum_amount FROM oe.customers c; В этом запросе top_orders используется дважды. Интуитивно кажется: Oracle один раз посчитает CTE и дальш