Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала

Здесь есть возможность читать онлайн «Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 11, Жанр: Программирование, Базы данных, Прочая околокомпьтерная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Oracle SQL. 100 шагов от новичка до профессионала: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Oracle SQL. 100 шагов от новичка до профессионала»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Более 300 ответов на вопросы.
Более 500 практических заданий.
Более 1000 разобранных примеров.
Учебник справочник по языку SQL.

Oracle SQL. 100 шагов от новичка до профессионала — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Oracle SQL. 100 шагов от новичка до профессионала», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Выполним сначала следующий запрос:

Рисунок 163. Демонстрация работы аналитических функций

Колонка NUM, полученная с помощью аналитической функции ROW_NUMBER () и аналитического подзапроса, возвращает номер строки в наборе данных, разбитом по колонке OTD, отсортированном по SAL.

Преобразуем запрос, чтобы вывести только первых трех сотрудников.

Рисунок 164. Демонстрация работы аналитических функций

Еще один пример: данные делятся по наименованию отдела OTD, а сортировка данных в рамках сегмента по имени — NAME.

По наименованию (PARTITION по отделу), сортировка по NAME.

Вывести рабочие дни в следующем месяце, выходные не учитываются.

Рисунок 165. Демонстрация работы аналитических функций: запрос к PERSONA

Запросы с накопительным итогом

Накопление суммы в рамках отдела, накопление прибыли в рамках заданного месяца, накопление бонусов в рамках карты с сортировкой по дате — все это запросы с накопительным итогом.

Запросы с накопительным итогом пишутся аналогично запросам, которые мы только что проходили, различаются только функции. В данном случае рассмотрим аналитическую функцию SUM.

Накопительный итог по зарплате.

В данном запросе в колонке Num формируется накопительный итог по зарплате — аналитическая функция SUM (SAL), в рамках отдела с сортировкой по зарплате OVER (PARTITION BY OTD ORDER BY SAL).

Рисунок 166. Демонстрация работы аналитических функций: запрос к PERSONA

Накопительный итог по зарплате, но с сортировкой по NAME.

В данном запросе в колонке Num формируется накопительный итог по зарплате — аналитическая функция sum (sal), в рамках отдела с сортировкой по колонке name — OVER (PARTITION BY otd ORDER BY name).

Рисунок 167. Демонстрация работы аналитических функций: запрос к PERSONA

Попробуем найти среднее значение по зарплате с накоплением в рамках отдела, используем avg (sal).

Рисунок 168. Демонстрация работы аналитических функций: запрос к PERSONA

Важные замечания

В первом примере мы использовали аналитическую функцию ROW_NUMBER (), но предположим, что у нескольких людей в рамках одного отдела одинаковая зарплата, а значит в рейтинге эти люди должны быть на одной позиции. Получается, что запрос из первого примера не совсем корректный.

Для правильной работы запроса из первого примера лучше использовать специальную функцию, которая называется RANK ().

Более корректно: используем rank ().

Рисунок 169. Демонстрация работы аналитических функций: запрос к PERSONA

Посмотрите, как изменились результаты: теперь, когда у людей в рамках отдела одинаковая зарплата, им присваивается одинаковый рейтинг — Макс, Макс и Макс из отдела 30.

Пример демонстрирует отличие rank () от row_number ().

Вопросы учеников

Чем отличаются аналитические функции AVG и SUM от соответствующих агрегатных функций, используемых при простой группировке?

Они имеют совершенно разное назначение: благодаря конструкции OVER в запросе СУБД понимает, что в запросе используется аналитический SQL, тогда будет возвращен накопительный итог, иначе функция будет работать как обычная агрегатная функция.

В чем отличие аналитической функции RANK (f) от функции DENSe_RANK (f)?

RANK (f) считает абсолютный ранг записи в рамках сегмента — отдела в нашем примере, DENSe_RANK вычисляет относительный ранг, с учетом изменения результата.

Посмотрите следующий пример, чтобы лучше понять, как работает RANK ().

Рисунок 170. Демонстрация работы аналитических функций: запрос к PERSONA

В данном случае RANK Тани = 3, а dense_RANK Тани = 8.

Можно ли в примере в запросах с рейтингом не использовать сортировку ORDER BY?

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

Что если в запросе с накопительным итогом не использовать ORDER BY?

Тогда функция вернет окончательный итог без учета накоплений.

Пример запроса:

Рисунок 171. Демонстрация работы аналитических функций: запрос к PERSONA, первые N

Что означает в синтаксисе аналитических запросов NULLS FIRST/NULLS LAST?

Это параметры значат, что если аналитическая функция встречает в запросе пустое значение, то помещает их в конец списка NULLS LAST или в начало списка NULLS FIRST.

Контрольные вопросы и задания для самостоятельного выполнения

1. Разберите запросы из тестовых примеров.

2. Выведите на экран 5 сотрудников с самой высокой зарплатой personA.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Oracle SQL. 100 шагов от новичка до профессионала»

Представляем Вашему вниманию похожие книги на «Oracle SQL. 100 шагов от новичка до профессионала» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Oracle SQL. 100 шагов от новичка до профессионала»

Обсуждение, отзывы о книге «Oracle SQL. 100 шагов от новичка до профессионала» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x