Формирование запросов средствами языка SQL
Функции агрегирования
Фраза GROUP BY оператора SELECT применяется для определения группы строк, над которыми выполняются функции агрегирования. Если в операторе SELECT указана фраза GROUP BY, то все имена столбцов, указываемые в списке для определения создаваемого результирующего набора, должны быть указаны с функциями агрегирования, поскольку для каждой группы строк в результирующий набор будет включена только одна строка, содержащая значения, полученные функциями агрегирования над данной группой строк.
К функциям агрегирования относятся следующие функции языка SQL:
- COUNT - подсчет количества всех значений столбцов, за исключением значения NULL и с учетом указания фраз ALL или DISTINCT.
- COUNT (*) - подсчет количества всех значений столбцов в группе.
- AVG - определение среднего значения.
- SUM - подсчет суммы всех значений группы. Если при этом получаемое значение выходит за пределы суммируемого типа данных, то инициируется ошибка выполнения SQL-оператора.
- MAX - определение максимального значения из группы.
- MIN - определение минимального значения из группы.
Фраза HAVING оператора SELECT определяет предикат аналогично фразе WHERE, но применяемый к строкам, полученным в результате выполнения функций агрегирования.
Приведем пример выбора с применением групп. Столбец dno имеет всего три различных значения: 11, 22 и 33. Для каждой из трех групп находится минимальное и максимальное значение столбца f2:
SELECT dno, MIN(f2), MAX(f2) FROM tbl1 GROUP BY dno;
Результатом выполнения этого SQL-оператора будет формирование следующих строк:
DNO MIN(f2) MAX(f2) 11 125 200 22 200 2300 33 100 150
При выборе с применением групп и с дополнительным ограничением на значение в столбце MAX(f2):
SELECT dno, MIN(f2), MAX(f2) FROM tbl1 GROUP BY dno HAVING MAX(f2) < 1000;
В результате выполнения этого SQL-оператора будут возвращены только две строки - первая и последняя:
DNO MIN(f2) MAX(f2) 11 125 200 33 100 150
Упорядочивание результирующего набора
Фраза ORDER BY применяется для упорядочивания результирующего набора, которое выполняется в соответствии со значениями столбцов, указанных в списке после фразы ORDER BY. Сначала производится упорядочивание по первому указанному столбцу, потом по второму и т.д. При упорядочивании можно указать опцию ASC (по возрастанию) или DESC (по убыванию).
Например:
SELECT f1,f2 FROM tbl1 ORDER BY f2;
Создание таблиц по образцу
Стандарт SQL-99 вводит поддержку создания таблиц по образцу, позволяя копировать структуру таблицы, создавая новую таблицу, имеющую количество столбцов и их типы, полностью идентичные исходной таблице. Создаваемая по образцу таблица указывается фразой LIKE.
Например:
CREATE TABLE tbl2 LIKE tbl1;.