Подзапросы в жизни
Вспомните школьные уроки по математике. Легко ли из вычесть ?
Возможно, вы без труда справитесь с этим примером в уме, но мы предлагаем упростить задачу:
- Сначала решим такой пример: . Получим .
- От отнимем ещё . Получим .
- Из вычтем . Выйдет .
Решено, сдавайте тетради.
Такой способ решения является примером декомпозиции: одну сложную задачу делят на несколько маленьких. Эта декомпозиция выглядит линейно: итоговый результат складывается поэтапно из небольших задач.
Вернёмся во взрослую жизнь и рассмотрим ещё один пример линейной декомпозиции.
Ситуация на работе: начальник просит сделать таблицу с выручкой по каждому товару. Простой запрос, и таблица готова.
Начальнику не всё понятно, и он просит сгруппировать данные и отобразить среднюю выручку за каждый месяц. А потом хочет увидеть среднее от среднего за весь период.
Эта ситуация тоже описывает линейное решение задачи. По шагам её выполнить проще, чем целиком.
Задачи можно решать линейно и с помощью SQL. Представьте, что промежуточный результат можно сохранить и уже из него выгружать нужные метрики.
В следующих уроках вы научитесь пользоваться специальным механизмом для линейного решения задач в SQL — подзапросами. С их помощью вы сможете разбивать большой запрос на несколько запросов поменьше и выгружать данные из промежуточных таблиц.