Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Фразы GROUP BY и HAVING




2.2.1. Синтаксис:

Назначение

Фраза GROUP BY определяет столбец или список столбцов (выражение над столбцом или список выражений над столбцами), которые используются для группирования строк таблицы. Выражения фразы GROUP BY могут содержать любые столбцы из таблиц фразы FROM, не зависимо от того, появляетсяь ли столбец во списке select. Если запрос содержит фразу GROUP BY, то список select может содержать только:

· константы,

· выражения, включающие только агрегатные функции,

· выражения из фразы GROUP BY,

· выражения, которые включают упомянутые выше выражения.

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

Назначение фразы HAVING – определить условие выбора на группах строк. Она ограничивает группы строк теми, на которых указанное условие равно TRUE..

Указывайте GROUP BY и HAVING фразы после фразы WHERE..

См. также описание синтаксиса для выражений в ПРиложении Лаб.4 и синтаксис описания условий в Приложении Лаб.2.

Фраза ORDER BY

2.3.1. Синтаксис:

Назначение

Фраза ORDER BY позволяет упорядочить строки результата запроса. При отсутствии этой фразы нет ни какой гарантии, что будучи выполненным дважды, запрос выдаст строки результата в одном и том же порядке.

· expr – означает, что строки упорядочиваются согласно значения выражения expr. Выражение может базироваться на столбцах из списка select или на столбцах из таблиц фразы FROM.

· position – упорядочивает строки на основании значений выражения в указанной позиции списка select; position должно быть целым числом.

· c_alias – упорядочивает строки на основании значения столбца (выражения), который имеет указанный алиас в списке select.

· ASC и DESC указывают порядок сортировки: по возрастанию или убыванию. ASC – знчение по умолчанию.

Можно указать множество выражений во фразе ORDER BY. В этом случае производится многоуровневая сортировка. Oracle располагает значения null в конце при сортировке в порядке возрастания и в начале при сортировке в порядке убывания.

Ограничения:

· Если вы указали фразу DISTINCT, то фраза ORDER BY должна ссылаться только на столбцы из списка select.

· Если также задана фраза GROUP BY, то фраза ORDER BY ограничивается следующими выражениями:

- Константы

- Агрегатные функции

- Выражения, идентичные тем, что используются во фразе group by

- Выражения, включающие приведенные выше выражения, которые вычисляют одно и то же значение для всх строк в группе.

Описание и примеры

Агрегатные функции

Агрегатные функции без фраз WHERE и GROUP BY. Если фразы WHERE и GROUP BY отсутствуют, то областью действия агрегатной функции являются все строки таблицы.

Пример. Сколько строк в таблице TEACHER:

SELECT COUNT(*) AS Total_rows_in_TEACHER_table

FROM TEACHER;

Пример. Чему равна сумма фондов всех факультетов:

SELECT SUM(Fund)

FROM FACULTY;

Пример. Какой средний фонд финансирования кафедр:

SELECT AVG(Fund)

FROM DEPARTMENT;

Агрегатные функции с фразой WHERE. При наличии фразы WHERE областью действия агрегатной функции являются те строки, которые удовлетворяют условию фразы WHERE.

Пример. Какова средняя ставка ассистентов, которые не имеют надбавки.

SELECT AVG(Salary)

FROM TEACHER

WHERE UPPER(Post) = 'ASSISTANT' AND Commission IS NULL;

Пример. Какой максимальный фонд среди кафедр факультета информатики?

SELECT MAX(DEPARTMENT.Fund)

FROM DEPARTMENT, FACULTY

WHERE DEPARTMENT.FacNo = FACULTY.FacNo AND UPPER(FACULTY.Name) = 'INFORMATICS';

Выражения в агрегатной функции. Аргументы агрегатных функций могут содержать выражения над столбцами таблицы.

Премер. Какова максимальная величина Salary+Commission?

SELECT MAX(Salary + Commission)

FROM TEACHER;

Пример. Какова разница между максимальной и минимальной ставками?

SELECT MAX(Salary) – MIN(Salary)

FROM TEACHER;

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

Пример. Сколько номеров телефонов в таблице TEACHER:

SELECT COUNT(DISTINCT Tel) AS Number_of_telephones

FROM TEACHER;

Пример. Сколько должностей в таблице TEACHER:

SELECT COUNT(DISTINCT Post)

FROM TEACHER;

Множество агрегатных функций в списке select. Список Select может содержать множество агрегатных функций.

Example. Сколько профессоров в Вузе и какова их средняя ставка:

SELECT COUNT(*), SUM(Salary)

FROM TEACHER

WHERE UPPER(Post) = 'PROFESSOR';

Агрегатные функции с фразой GROUP BY. См. примеры фразы использования фразы GROUP BY.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных