О. Ткачев - Основы программирования в СУБД Oracle. SQL+PL/SQL.

Тут можно читать онлайн О. Ткачев - Основы программирования в СУБД Oracle. SQL+PL/SQL. - бесплатно ознакомительный отрывок. Жанр: Прочая околокомпьтерная литература. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

О. Ткачев - Основы программирования в СУБД Oracle. SQL+PL/SQL. краткое содержание

Основы программирования в СУБД Oracle. SQL+PL/SQL. - описание и краткое содержание, автор О. Ткачев, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
В этой книге рассмотрены Oracle версия SQL и его расширение PL/SQL, содержится описание синтаксиса и правил использования всех основных конструкций этих языков. Излагаемый материал иллюстрируется многочисленными примерами, позволяющими понять, при решении каких задач целесообразно использовать рассматриваемый элемент языка.Книга может быть использована как в учебном процессе, при изучении дисциплины «Базы данных» студентами IT-специальностей, так и для самостоятельного освоения SQL и PL/SQL.

Основы программирования в СУБД Oracle. SQL+PL/SQL. - читать онлайн бесплатно ознакомительный отрывок

Основы программирования в СУБД Oracle. SQL+PL/SQL. - читать книгу онлайн бесплатно (ознакомительный отрывок), автор О. Ткачев
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

В предложении GROUP BY можно указать несколько столбцов. В этом случае группу образуют строки с совпадающими значениями всех столбцов, по которым осуществляется группировка. Рассмотрим задачи, в которых требуется группировка по нескольким столбцам.

Сначала рассмотрим запрос, который содержит типичную ошибку при решении задач, требующих группировки по нескольким столбцам.

Пример 4.10а. Для каждого отдела определить должности и количество сотрудников, занимающих эту должность (содержит ошибку)

SELECT department_id, job_id, count (*)

FROM employees

GROUP BY department_id;

Причина ошибки: при наличии группировки предложение SELECT может содержать только столбцы, по которым осуществляется группировка и агрегатные функции.

Пример 4.10б. Для отделов 30 и 50 определить должности и количество сотрудников, занимающих каждую должность

SELECT department_id, job_id, count (*)

FROM Employees

WHERE department_id IN (30,50)

GROUP BY department_id, job_id

ORDER BY department_id;

Пример 411 Для отделов номер которых меньше 50 вывести рейтинги которые - фото 117

Пример 4.11. Для отделов, номер которых меньше 50, вывести рейтинги, которые имеют сотрудники этого отдела, их количество и суммарную зарплату

SELECT department_id, rating_e, count (*),sum (salary)

FROM Employees

WHERE department_id <= 50

GROUP BY department_id, rating_e

ORDER BY department_id;

Использование условий на группу Условия на группу указываются в предложении - фото 118

Использование условий на группу

Условия на группу указываются в предложении HAVING.

Пример 4.12. Вывести суммарную зарплату для тех отделов, у которых суммарная зарплата превышает 50 000

SELECT department_id, SUM (salary)

FROM Employees

GROUP BY department_id

HAVING SUM (salary)> 50000;

Условие выборки может быть проверено до группировки В этом случае сначала - фото 119

Условие выборки может быть проверено до группировки. В этом случае сначала выбираются строки, удовлетворяющие условию, а потом осуществляется группировка полученных данных. Для полученных групп можно указать условие в предложении HAVING. В результат запроса попадут только те группы, которые удовлетворяют этому условию.

Пример 4.13. Вывести должности и количество сотрудников, которые получают зарплату более 10 000

SELECT department_id, SUM (salary)

FROM Employees

GROUP BY department_id

HAVING SUM (salary)> 50000;

К условиям предыдущей задачи можно добавить условие вывести только те - фото 120

К условиям предыдущей задачи можно добавить условие: вывести только те должности, которые занимают более одного сотрудника.

Пример 4.14. Вывести должности и количество сотрудников, которые получают зарплату более 10 000, которые занимают более одного сотрудника, упорядочив их в порядке убывания количества сотрудников

SELECT job_id, COUNT (*) As num_job

FROM Employees

WHERE salary> 10000

GROUP BY job_id

HAVING COUNT (*)> 1

ORDER BY num_job DESC;

Пример 415 Вывести номера отделов у которых число сотрудников имеющих - фото 121

Пример 4.15. Вывести номера отделов, у которых число сотрудников, имеющих рейтинг 5, больше одного, количество сотрудников, имеющих рейтинг 5, и их суммарную зарплату

SELECT department_id, rating_e, count (*),sum (salary)

FROM Employees

WHERE rating_e = 5

GROUP BY department_id, rating_e

HAVING count (*)> 1

ORDER BY department_id;

Использование вложенных агрегатных функций Хотя Oracle и допускает - фото 122

Использование вложенных агрегатных функций

Хотя Oracle и допускает использование вложенных агрегатных функций, но только на один уровень и только в предложении SELECT. При этом предложение SELECT не должно содержать других элементов.

Пример 4.16. Определить количество сотрудников в каждом отделе

SELECT department_id, count (*)

FROM Employees

GROUP BY department_id

ORDER BY department_id;

Используя вложенные агрегатные функции можно найти максимальное число - фото 123

Используя вложенные агрегатные функции, можно найти максимальное число сотрудников, работающих в одном отделе.

Пример 4.17. Найти максимальное число сотрудников работающих в одном отделе

SELECT Max (COUNT (*))

FROM Employees

GROUP BY department_id;

Но вложенные агрегатные функции нельзя использовать в предложениях WHERE и - фото 124

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

Пример 4.18. Найти отдел, в котором работает максимальное число сотрудников.

SELECT department_id, COUNT (*)

FROM Employees

GROUP BY department_id

HAVING COUNT (*) =

(SELECT MAX (COUNT (*))

FROM Employees

GROUP BY department_id);

Использование специальных операторов группировки Рассмотрим специальные - фото 125

Использование специальных операторов группировки

Рассмотрим специальные операторы группировки и функции, которые позволяют существенно расширить возможности запросов с группировкой данных.

Оператор GROUP BY ROLLUP

Расширяет возможности GROUP BY, возвращая для каждой группы строку, содержащую итоги по группе, а также строку, содержащую общий итог для всех групп, и имеет следующий вид:

GROUP BY ROLLUP {список столбцов}

Для демонстрации возможностей, которые предоставляет оператор GROUP BY ROLLUP, рассмотрим следующую задачу: для каждого отдела определить должности и количество сотрудников, занимающих эту должность. Решение этой задачи без использования ROLLUP содержится в примере 4.10.

Пример 4.19. Для отделов 30 и 50 определить должности и количество сотрудников, занимающих эту должность

SELECT department_id, job_id, count (*)

FROM Employees

WHERE department_id IN (30,50)

GROUP BY ROLLUP (department_id, job_id)

ORDER BY department_id;

По сравнению с результатами которые выводит запрос из примера 410 этот - фото 126

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

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

Интервал:

Закладка:

Сделать


О. Ткачев читать все книги автора по порядку

О. Ткачев - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Основы программирования в СУБД Oracle. SQL+PL/SQL. отзывы


Отзывы читателей о книге Основы программирования в СУБД Oracle. SQL+PL/SQL., автор: О. Ткачев. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x