Московский государственный университет имени М.В.Ломоносова
Опубликован: 05.01.2004 | Доступ: свободный | Студентов: 9474 / 1246 | Оценка: 4.04 / 3.84 | Длительность: 10:03:00
ISBN: 978-5-94774-539-9
Лекция 3:

Формирование запросов средствами языка SQL

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Функции агрегирования

Фраза 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;.
< Лекция 2 || Лекция 3: 123 || Лекция 4 >