Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры БД.docx
Скачиваний:
16
Добавлен:
26.09.2019
Размер:
592.64 Кб
Скачать
  1. Назначение и использование агрегатных функций, параметров Group by и Having оператора Select. Примеры группирующих запросов.

Следующий параметр оператора SELECT − параметр GROUP BY – требует группировки строк в результате запроса. Группировка – объединение нескольких строк результата запроса, составляющих группу, в одну строку. Условием образования группы является совпадение значений в заданных столбцах (группирующих выражениях) оператора SELECT.

Общая структура оператора SELECT с группировкой строк такова:

SELECT <групп.выр.1>,….,< групп.выр. n> , <агр.выр.1> , … ,<агр.выр. m>

FROM . . . . WHERE . . .

GROUP BY [All] < групп. выр.1> ,…. < групп. выр.n>

Список элементов в параметре GROUP BY должен быть согласован со списком столбцов самого оператора SELECT. Параметр GROUP BY должен содержать элементы из списка столбцов, по которым образуются группы строк. Кроме группирующих элементов (<групп.выр.1>, . .) в списке вывода могут содержаться элементы, задающие групповую обработку – агрегатные выражения (агр. выр. 1, . . . ), приводящие к вычислениям на множестве строк, попадающих в одну группу.

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

Основные агрегирующие функции:

COUNT (*) – подсчитывает количество строк в группе;

COUNT ALL\DISTINCT <выражение> - подсчитывает количество всех (ALL) или только разных (DISTINCT) значений выражения на строках группы. По умолчанию действует опция ALL;

SUM ALL\DISTINCT <выражение> - вычисляет суммарное значение заданного выражения на строках каждой группы;

AVG ALL\DISTINCT <выражение> - вычисляет среднее значение выражения на всех строках группы (ALL) или только на различающихся значениях выражения (DISTINCT). DISTINCT предварительно удаляет дубликаты значений;

MAX ALL\DISTINCT <выражение> – вычисляет максимальное значение выражения для каждой группы;

MIN ALL\DISTINCT <выражение> – вычисляет минимальное значение в группе.

Примером использования группировки может служить запрос, вычисляющий по таблице authors количество авторов, проживающих в каждом штате SELECT STATE As [Штат], count(*) As [Число авторов] FROM authors GROUP BY STATE .

Если в параметре GROUP BY используется опция ALL совместно с агрегирующими выражениями, то будут выводиться все возможные группы, даже не удовлетворяющие критерию, заданному параметром WHERE, со значением NULL агрегирующих выражений, соответствующих группам, не удовлетворяющим критерию.

Агрегатные функции могут применяться и без использования группировки. В этом случае они вычисляют значения на всем множестве строк таблицы. Например, оператор Select Count(*) From authors возвратит число строк в таблице authors.

Следующий параметр HAVING в операторе SELECT предназначен для селекции групп перед выдачей результата запроса. Поэтому параметр HAVING без GROUP BY не используется. Он содержит критерий для фильтрации групповых строк. Критерий представляет собой логическое выражение, аналогичное WHERE, но применяемое к образованным в запросе группам.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]