Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 1/16
Кратко:
- Подзапросы в математике упрощают решение сложных задач, разбивая их на несколько простых.
- Линейная декомпозиция позволяет решать задачи поэтапно, что облегчает их выполнение.
- В работе, линейная декомпозиция может быть использована для разбиения сложных запросов на более простые.
- SQL также позволяет решать задачи линейно, используя механизм подзапросов для разбиения больших запросов на несколько.
- Подзапросы в SQL позволяют выгружать данные из промежуточных таблиц для получения нужных метрик.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 2/16
Кратко:
- Подзапросы во FROM используются для решения сложных запросов в SQL.
- Подзапросы позволяют декомпозировать задачу и упростить код.
- Подзапросы состоят из вложенных запросов, которые выполняются один за другим.
- Подзапросы могут быть написаны после оператора FROM и должны быть назначены псевдоним.
- Пример использования подзапросов: нахождение среднего от среднего значения аренды фильмов разных возрастных рейтингов.
- Подзапросы также используются для решения декомпозиции задач, таких как поиск фильмов с тройкой самых востребованных актёров и актрис.
- Соблюдение правил стиля и отступов в коде помогает избежать ошибок при использовании подзапросов.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 4/16
Кратко:
- Оптимизация работы с однотипными задачами: писать запросы заново или оптимизировать их.
- Пример задачи: найти 20 клиентов с самой большой суммарной стоимостью покупок за последний месяц.
- Ограничение выгрузки данными за год: WHERE id IN (id_1, id_2 ...) AND year = ....
- Проблема: каждый месяц нужно составлять новый запрос с подсчётами за год, так как список клиентов меняется.
- Оптимизация: использование подзапроса в WHERE для формирования списка клиентов и ограничения выгрузки данными за год.
- Подзапросы в WHERE: дополняют основной запрос, уточняя нужный срез, а не решают большую задачу поэтапно.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 5/16
Кратко:
- Подзапросы в WHERE используются для фильтрации данных на основе результатов других запросов.
- Подзапросы работают аналогично операторам FROM и WHERE в других языках программирования.
- Подзапросы позволяют сначала отбирать данные, а затем объединять их в итоговую таблицу, что может быть быстрее, чем наоборот.
- Пример использования подзапросов: отбор фильмов по двум условиям: длительность не превышает среднюю длительность фильмов и в них снималось более 12 актёров и актрис.
- Сначала находятся средняя длительность всех фильмов и фильмы, в которых снималось более 12 актёров и актрис.
- Затем отфильтровываются фильмы по средней длительности и количеству актёров.
- После этого вычисляется средняя стоимость отобранных фильмов.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 7/16
Кратко:
- Подзапросы и присоединения - это два подхода к решению аналитических задач.
- Выбор подхода зависит от данных и доступных мощностей.
- Нет строгих правил, как придерживаться одного подхода или комбинировать их.
- В статье рассматривается пример декомпозиции задачи и два подхода к ее решению.
- В следующем уроке будут рассмотрены примеры с кодом для понимания комбинаций подзапросов и присоединений на практике.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 8/16
Кратко:
- Таблицы, сформированные с помощью подзапросов, работают аналогично таблицам из базы данных.
- Объединение больших таблиц может занять много времени, поэтому лучше предварительно обработать данные.
- Подзапросы могут быть использованы для получения данных, которые не могут быть сгруппированы или отсортированы.
- При объединении таблиц с подзапросами, необходимо использовать оператор LEFT OUTER JOIN для объединения таблиц с разными данными.
- При проверке данных на корректность, подзапросы могут быть более эффективными, чем присоединение таблиц.
- Декомпозиция данных может помочь упростить задачу и избежать ошибок при работе с подзапросами.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 9/16
Кратко:
- Не существует универсального правила сочетания подзапросов и присоединений.
- Для удобства решения задач можно скачать PDF-версию ER-диаграммы с описанием таблиц или открыть диаграмму в соседней вкладке.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 10/16
Кратко:
- Общие табличные выражения (CTE) помогают структурировать подзапросы и выносить их за пределы основного кода.
- CTE используют ключевое слово WITH для указания псевдонима и подзапроса.
- В основном запросе можно обращаться к общему табличному выражению по псевдониму, но нельзя после оператора WHERE.
- CTE позволяют переписать запрос с использованием подзапросов и присоединений, делая код более понятным и структурированным.
- Общие табличные выражения являются удобным инструментом для декомпозиции: одно общее табличное выражение - одна подзадача.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 12/16
Кратко:
- Язык запросов SQL очень вариативен и запросы часто можно «перефразировать».
- SQL - декларативный язык, описывающий конечный результат, а не алгоритм.
- В SQL результат двух разных запросов может быть одинаковым.
- Вариативность - несомненное преимущество SQL, но не забывайте, что SQL - сложный язык.
- Не спешите, продумайте чёткую структуру запроса и постарайтесь его оптимизировать.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 13/16
Кратко:
- Строковые данные важны для хранения информации о клиентах и заказах.
- Функции LENGTH, INITCAP, LOWER, UPPER, LTRIM, RTRIM, REPLACE и CONCAT используются для работы со строками.
- LENGTH возвращает длину строки, INITCAP меняет первую букву каждого слова на заглавную, LOWER и UPPER меняют регистр символов.
- LTRIM и RTRIM удаляют символы слева и справа от указанной позиции.
- REPLACE заменяет один символ на другой, а CONCAT объединяет несколько строк в одну.
- Функции можно комбинировать для более сложных задач.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 14/16
Кратко:
- ER-диаграмма с описанием таблиц для удобства решения задач.
- Таблица функций для работы со строками: LENGTH, INITCAP, LOWER, UPPER, LTRIM, RTRIM, REPLACE, CONCAT.
- LENGTH: возвращает длину строки.
- INITCAP: меняет первую букву каждого слова на заглавную, остальные на строчные.
- LOWER: возвращает строку со всеми символами в нижнем регистре.
- UPPER: возвращает строку со всеми символами в верхнем регистре.
- LTRIM: удаляет последние символы слева, передаваемые функции.
- RTRIM: удаляет последние символы справа, передаваемые функции.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 15/16
Кратко:
- Прохождение темы "Подзапросы и общие табличные выражения"
- Осталось 2 темы и самостоятельный проект
- Образовательные результаты: подзапросы, объединение таблиц, временные таблицы
- Шпаргалка темы для сохранения результатов
Заключение
Вы прошли тему «Подзапросы и общие табличные выражения», поздравляем! Впереди — ещё 2 темы и самостоятельный проект.
Образовательные результаты
Чему вы научились:
- писать запросы с подзапросами,
- сочетать подзапросы с объединением таблиц,
- создавать временные таблицы.
Заберите с собой
Чтобы ничего не забыть, скачайте шпаргалку темы.
Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 16/16
Проверочные задания.