О. Ткачев - Основы программирования в СУБД 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. - читать книгу онлайн бесплатно (ознакомительный отрывок), автор О. Ткачев
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Таблица 4.1. Агрегатные функции

Синтаксис агрегатных функций имя функции Аргумент где expr аргумент - фото 107

Синтаксис агрегатных функций:

{имя функции} ({Аргумент})

где: expr – аргумент агрегатной функции, который может содержать следующие элементы:

[DISTINCT] {имя столбца} | {выражение} | {однострочная функция}

Следует обратить внимание на то, что аргументом групповой функции может быть однострочная функция. Хотя стандарт языка SQL запрещает использование агрегатных функций в качестве аргумента агрегатных функций, СУБД Oracle допускает это, но только на один уровень в глубину и только в предложении SELECT. Рассмотрим примеры использования агрегатных функций.

Пример 4.1. Вывод обобщенных данных о зарплате сотрудников

SELECT MIN (salary) AS minimum, MAX (salary) AS maximum, ROUND (AVG (salary)) AS medium, SUM (salary) As summa, COUNT (salary), COUNT (*)

FROM Employees;

В полученном результате следует обратить внимание на то что COUNT salary - фото 108

В полученном результате следует обратить внимание на то, что:

– COUNT (salary) возвращает число сотрудников, получающих зарплату, у которых значение столбца salary не NULL;

– COUNT (*) возвращает число всех сотрудников.

Этот запрос не учитывает то, что некоторые сотрудники получают комиссионные. Зарплата сотрудника с учетом комиссионных может быть вычислена путем использования выражения:

salary * (1 + NVL (commission_pct,0))

Используя это выражение в предыдущем запросе, вместо столбца salary получим:

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

SELECT MIN (salary* (1+NVL (commission_pct,0))) AS minimum,

MAX (salary* (1+NVL (commission_pct,0))) AS maximum,

ROUND (AVG (salary* (1+NVL (commission_pct,0)))) AS medium,

SUM (salary* (1+NVL (commission_pct,0))) As summa,

COUNT (salary* (1+NVL (commission_pct,0))) AS ′′COUNT (expr) ′′,

COUNT (*)

FROM Employees;

Пример 43 Использование функции COUNT SELECT COUNT COUNT salaryCOUNT - фото 109

Пример 4.3. Использование функции COUNT

SELECT COUNT (*), COUNT (salary),COUNT (DISTINCT salary),

COUNT (commission_pct)

FROM Employees

WHERE department_id =80;

Анализ результатов этого запроса COUNT вернула число сотрудников в - фото 110

Анализ результатов этого запроса:

– COUNT (*) – вернула число сотрудников в отделе 80;

– COUNT (salary) – вернула число сотрудников в отделе 80,

у которых значение столбца salary не NULL;

– COUNT (DISTINCT salary) – вернула число различных значений в столбце salary;

– COUNT (commission_pct) – вернула число сотрудников в отделе 80, у которых значение столбца commission_pct не NULL.

Оператор DISTINCT используется для исключения повторяющихся значений. Например, необходимо определить количество должностей. Запрос без оператора DISTINCT вернет количество сотрудников, у которых значение столбца job_id не NULL.

Пример 4.4. Количество сотрудников, у которых значение столбца job_id не NULL

SELECT COUNT (job_id)

FROM Employees;

Если в аргумент функции COUNT добавить оператор DISTINCT то будут исключены - фото 111

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

Пример 4.5. Количество уникальных значений столбца job_id

SELECT COUNT (DISTINCT job_id)

FROM Employees;

Задача требуется определить средний размер комиссионных Рассмотрим два - фото 112

Задача: требуется определить средний размер комиссионных. Рассмотрим два варианта решения этой задачи.

Вариант 1

SELECT AVG (commission_pct)

FROM Employees;

Вариант 2.

SELECT AVG (NVL (commission_pct, 0))

FROM Employees;

Здесь правильный вариант решения не очевиден. У значительной части сотрудников значение столбца commission_pct имеет значение NULL. Если этим сотрудникам комиссионные не положены и они не должны учитываться, то правильным будет первый вариант. Если значение NULL следует считать равным нулю, то следует использовать второй вариант запроса.

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

Пример 4.6a. Найти сотрудника, получающего максимальную зарплату

Внимание: ЭТОТ ЗАПРОС НЕ БУДЕТ ВЫПОЛНЕН!

SELECT employee_id, salary

FROM Employees

WHERE salary = MAX (salary);

Данную задачу можно решить следующим образом:

Пример 4.6б. Найти сотрудника, получающего максимальную зарплату

SELECT employee_id, salary AS maximum

FROM Employees

WHERE salary = (SELECT MAX (salary) FROM Employees);

Данный запрос содержит в предложении WHERE подзапрос Использование подзапросов - фото 113

Данный запрос содержит в предложении WHERE подзапрос. Использование подзапросов будет рассмотрено позже.

Группировка

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

SELECT {список столбцов*), {агрегатные функции}

FROM {таблица}

WHERE {условия}

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

HAVING {условия на группу};

Списки столбцов в предложениях SELECT и GROUP BY должны совпадать.

Предложение GROUP BY разбивает данные на группы, и запрос выводит обобщенные данные о каждой группе.

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

Пример 4.7. Для каждого отдела определить суммарную зарплату

SELECT department_id, SUM (salary) AS SUM_salary

FROM Employees

GROUP BY department_id

ORDER BY department_id;

Пример 48 Для каждого отдела определить суммарную зарплату с учетом - фото 114

Пример 4.8. Для каждого отдела определить суммарную зарплату с учетом комиссионных

SELECT department_id, SUM (salary* (1+NVL (commission_pct,0)))

As sum_sal

FROM Employees

GROUP BY department_id

ORDER BY department_id;

Пример 49 Для каждого отдела определить суммарную длину имен столбца - фото 115

Пример 4.9. Для каждого отдела определить суммарную длину имен (столбца first_name)

SELECT department_id, SUM (LENGTH (first_name)) As sum_f_nam

FROM Employees

GROUP BY department_id

ORDER BY department_id;

Группировка по нескольким столбцам В предложении GROUP BY можно указать - фото 116

Группировка по нескольким столбцам

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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