Дополнительные возможности SQL презентация

Содержание

Слайд 2

Зачем соединения? Что такое предикат соединения? Для каких строк и

Зачем соединения?
Что такое предикат соединения?
Для каких строк и из каких таблиц

проверяется предикат?
Какие виды соединений бывают?
Select * from t1 left join t2 on t1.id = t2.id
Из какой таблицы СУБД выведет все строки?
Могут ли вывестись все строки из 2х таблиц?
Почему не всегда можно использовать «=» при фильтрации с помощью подзапроса?
Что такое коррелирующий подзапрос?

Вспоминаем пройденное

Занятие 5

Слайд 3

Объединение результатов нескольких запросов Вынесение подзапроса в оператор WITH Аналитические

Объединение результатов нескольких запросов
Вынесение подзапроса в оператор WITH
Аналитические функции
Оконные функции


Иерархические запросы
Практика

Занятие 6.
Дополнительные возможности SQL

План

Слайд 4

Объединение результатов нескольких запросов Клиенты Клиенты Партнеров

Объединение результатов нескольких запросов

Клиенты

Клиенты Партнеров

Слайд 5

Объединение результатов нескольких запросов Объединение результатов запросов позволяет сформировать единый

Объединение результатов нескольких запросов

Объединение результатов запросов позволяет сформировать единый набор данных

Какие

запросы можно объединять
Одинаковое кол-во столбцов
Столбцы должны совпадать типами данных или быть приводимыми
Слайд 6

Объединение результатов нескольких запросов SELECT -- Q1 column1 ,column2 ,column3

Объединение результатов нескольких запросов

SELECT -- Q1
column1
,column2
,column3
FROM [TABLE_1] as t1 -- таблица

или несколько
UNION / UNION ALL -- оператор объединения
SELECT
column1 -- порядок столбцов должен быть таким же, как в Q1
,column2
,column3
FROM { что угодно }
ORDER BY … -- сортировать можно только 1 раз
Слайд 7

Объединение результатов нескольких запросов UNION vs UNION ALL UNION ALL

Объединение результатов нескольких запросов

UNION vs UNION ALL

UNION ALL объединяет 2 набора

данных и выводит все строки
UNION объединяет 2 набора данных и убирает дубли строк
Те - выводит только уникальные строки
Слайд 8

Обобщенное табличное выражение Common Table Expression CTE – способ оформления

Обобщенное табличное выражение
Common Table Expression

CTE – способ оформления кода

Не влияет на

выполнение SQL запросов
Во время выполнения запроса с CTE СУБД «переписывает» этот запрос и исключает CTE
Слайд 9

Common Table Expression WITH [CTE_NAME] as ( SELECT * FROM

Common Table Expression

WITH [CTE_NAME] as (
SELECT *
FROM [TABLE_1] as t1 --

таблица или несколько
UNION ALL
SELECT *
FROM { что угодно }
)
SELECT *
FROM [CTE_NAME]
Слайд 10

Аналитические, Ранжирующие Оконные функции Аналитические функции вычисляют статистическое значение на

Аналитические, Ранжирующие
Оконные функции

Аналитические функции вычисляют статистическое значение на основе

группы строк.
Аналитические функции можно использовать для вычисления:
скользящих средних, промежуточных итогов, процентных долей или первых N результатов в группе.
Ранжирующие функции возвращают ранжирующее значение для каждой строки в секции(группе).
Аналитические и Ранжирующие функции – оконные функции, те функции которые рассчитываются в рамках «окна» \ группы \ секции
Слайд 11

Оконные функции Задают правила разбиения строк на группы (секции, окна)

Оконные функции

Задают правила разбиения строк на группы (секции, окна)
Задают правила

упорядочивания строк в группе
Вычисляет значение для каждой строчке в окне
Для вычислений могут использоваться:
Ранжирующие функции
Аналитические
Агрегатные – Агрегатные функции могут «превращаться» в оконные
Слайд 12

Оконные функции SELECT FUNC( ? ) OVER( PARTITION BY Column1

Оконные функции

SELECT
FUNC( ? ) OVER( PARTITION BY Column1 ORDER BY

Column 2, Column 3)
FROM [TABLE_1]
FUNC( ? ) -- Аналитическая, Ранжирующая или Агрегатная функция
OVER(PARTITION BY ? ORDER BY ? ) -- оператор окна, указывает СУБД, что нужно применять «оконные механизмы», задает параметры разбиения на группы(окна) и параметры сортировки
PARTITION BY -- параметр разбиения на группы(окна), аналог GOUP BY
ORDER BY – параметр сортировки внутри группы(окна)
Слайд 13

Оконные функции Нарастающий итог Ранжирование Добавление к строке «пред.\след.» значений

Оконные функции

Нарастающий итог
Ранжирование
Добавление к строке «пред.\след.» значений какой-то величины
Сумма продаж месяцем

ранее для каждого месяца

Типовые задачи для оконных функций

Слайд 14

Ранжирующие функции ROW_NUMBER() – нумерует строки по порядку ROW_NUMBER() OVER(PARTITION

Ранжирующие функции
ROW_NUMBER() – нумерует строки по порядку
ROW_NUMBER() OVER(PARTITION BY ? ORDER

BY ? )
RANK () – Возвращает ранг строки в группе
RANK () OVER(PARTITION BY ? ORDER BY ? )
DENSE_RANK () – Возвращает ранг строки в группе без «разрывов»
DENSE _RANK () OVER(PARTITION BY ? ORDER BY ? )
NTILE (N) – Разбивает секцию на подгруппы на основании ORDER BY из OVER
NTILE (N) OVER(PARTITION BY ? ORDER BY ? )
Слайд 15

Аналитические функции LAG(scalar_expression, offset, default ) – возвращает «предыдущее» значение

Аналитические функции
LAG(scalar_expression, offset, default ) – возвращает «предыдущее» значение
LAG(?, ?, ?

)OVER(PARTITION BY ? ORDER BY ? )
scalar_expression – колонка, предыдущее значение которой ищем
offset – смещение, сколько строк «назад» нужно отчитать.
1 – предыдущее, вчера
2 – позавчера, «позапредыдущее»
3 – 3 строки назад
default – у последней строки не может быть предыдущего значения, default – значение для последней строки, обычно 0.
LEAD(scalar_expression, offset, default ) – возвращает «следующее» значение
FIRST_VALUE(scalar_expression) – возвращает первое значение в группе
FIRST_VALUE(?, ?, ? )OVER(PARTITION BY ? ORDER BY ? )
LAST_VALUE(scalar_expression) – возвращает поседнее значение в группе
Слайд 16

Иерархическая структура Примеры иерархической организации: Главная компания Дочерняя компания Маленькая

Иерархическая структура

Примеры иерархической организации:
Главная компания
Дочерняя компания
Маленькая дочерняя компания
Маленькая дочерняя компания
Страна
Область
Город
Улица

Потомок

– предок, родитель - ребенок
Имя файла: Дополнительные-возможности-SQL.pptx
Количество просмотров: 72
Количество скачиваний: 0