Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 1/16

Кратко:
  • Подзапросы в математике упрощают решение сложных задач, разбивая их на несколько простых.
  • Линейная декомпозиция позволяет решать задачи поэтапно, что облегчает их выполнение.
  • В работе, линейная декомпозиция может быть использована для разбиения сложных запросов на более простые.
  • SQL также позволяет решать задачи линейно, используя механизм подзапросов для разбиения больших запросов на несколько.
  • Подзапросы в SQL позволяют выгружать данные из промежуточных таблиц для получения нужных метрик.

Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 2/16

Кратко:
  • Подзапросы во FROM используются для решения сложных запросов в SQL.
  • Подзапросы позволяют декомпозировать задачу и упростить код.
  • Подзапросы состоят из вложенных запросов, которые выполняются один за другим.
  • Подзапросы могут быть написаны после оператора FROM и должны быть назначены псевдоним.
  • Пример использования подзапросов: нахождение среднего от среднего значения аренды фильмов разных возрастных рейтингов.
  • Подзапросы также используются для решения декомпозиции задач, таких как поиск фильмов с тройкой самых востребованных актёров и актрис.
  • Соблюдение правил стиля и отступов в коде помогает избежать ошибок при использовании подзапросов.

B_SQL. Задача 1

B_SQL. Задача 2

B_SQL. Задача 3

B_SQL. Задача 4

B_SQL. Задача 5

Спринт 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 актёров и актрис.
  • Затем отфильтровываются фильмы по средней длительности и количеству актёров.
  • После этого вычисляется средняя стоимость отобранных фильмов.

B_SQL. Задача 1

B_SQL. Задача 2

B_SQL. Задача 3

B_SQL. Задача 4

B_SQL. Задача 5

B_SQL. Задача 6

Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 7/16

Кратко:
  • Подзапросы и присоединения - это два подхода к решению аналитических задач.
  • Выбор подхода зависит от данных и доступных мощностей.
  • Нет строгих правил, как придерживаться одного подхода или комбинировать их.
  • В статье рассматривается пример декомпозиции задачи и два подхода к ее решению.
  • В следующем уроке будут рассмотрены примеры с кодом для понимания комбинаций подзапросов и присоединений на практике.

Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 8/16

Кратко:
  • Таблицы, сформированные с помощью подзапросов, работают аналогично таблицам из базы данных.
  • Объединение больших таблиц может занять много времени, поэтому лучше предварительно обработать данные.
  • Подзапросы могут быть использованы для получения данных, которые не могут быть сгруппированы или отсортированы.
  • При объединении таблиц с подзапросами, необходимо использовать оператор LEFT OUTER JOIN для объединения таблиц с разными данными.
  • При проверке данных на корректность, подзапросы могут быть более эффективными, чем присоединение таблиц.
  • Декомпозиция данных может помочь упростить задачу и избежать ошибок при работе с подзапросами.

Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 9/16

Кратко:
  • Не существует универсального правила сочетания подзапросов и присоединений.
  • Для удобства решения задач можно скачать PDF-версию ER-диаграммы с описанием таблиц или открыть диаграмму в соседней вкладке.

B_SQL. Задача 1

B_SQL. Задача 2

B_SQL. Задача 3

B_SQL. Задача 4

Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 10/16

Кратко:
  • Общие табличные выражения (CTE) помогают структурировать подзапросы и выносить их за пределы основного кода.
  • CTE используют ключевое слово WITH для указания псевдонима и подзапроса.
  • В основном запросе можно обращаться к общему табличному выражению по псевдониму, но нельзя после оператора WHERE.
  • CTE позволяют переписать запрос с использованием подзапросов и присоединений, делая код более понятным и структурированным.
  • Общие табличные выражения являются удобным инструментом для декомпозиции: одно общее табличное выражение - одна подзадача.

B_SQL. Задача 1

B_SQL. Задача 2

B_SQL. Задача 3

Спринт 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: удаляет последние символы справа, передаваемые функции.

B_SQL. Задача 1

B_SQL. Задача 2

B_SQL. Задача 3

B_SQL. Задача 4

Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 15/16

Кратко:
  • Прохождение темы "Подзапросы и общие табличные выражения"
  • Осталось 2 темы и самостоятельный проект
  • Образовательные результаты: подзапросы, объединение таблиц, временные таблицы
  • Шпаргалка темы для сохранения результатов
Заключение

Вы прошли тему «Подзапросы и общие табличные выражения», поздравляем! Впереди — ещё 2 темы и самостоятельный проект.

Образовательные результаты

Чему вы научились:

  • писать запросы с подзапросами,
  • сочетать подзапросы с объединением таблиц,
  • создавать временные таблицы.

Заберите с собой

Чтобы ничего не забыть, скачайте шпаргалку темы.

 

Спринт 13/24 → Тема 5/9: Подзапросы и общие табличные выражения → Урок 16/16

Проверочные задания.