Должность

Раздел GROUP BY

Раздел ORDER BY

Раздел ORDER BY предназначен для упорядочения набора данных, возвращаемого после выполнения запроса.

SELECT TOP 10 *

FROM Дисциплины

ORDER BY Наименование

Полный синтаксис раздела следующий:

ORDER BY{ <условие_сортировки> [ASC|DESC]} [,…, n]

Параметр <условие сортировки> требует задания выражения, в соответствии с которым будет осуществляться сортировка строк. В простейшем случае это выражение представляет собой имя столбца одного из источников данных запроса.

В разделе допускается использование ключевых слов ASC (по возрастанию) и DESC (по убыванию). По умолчанию используется сортировка по возрастанию.

Данные можно отсортировать по нескольким столбцам. Сначала сортировка идет по первому столбцу, затем, если имеется множество строк с одинаковыми значениями в первом столбце, выполняется дополнительная сортировка этих строк по второму столбцу и т.д.

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

Синтаксис раздела:

GROUP BY [ALL]<условие_группировки> [,…, n]

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

В аргументе <условие_группировки> обычно указывается имя столбца.

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

Функция AVG вычисляет среднее значение

Синтаксис:

AVG ([ALL|DISTINCT] <выражение>)

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

SELECT AVG(Количество_часов) FROM Учебный_план

Результат запроса:

--------------------

(1 row(s) affected)

Рассмотрим AVG совместно с GROUP BY при выполнении группировки по столбцу Семестр:

SELECT Семестр, AVG(Количество_часов)

FROM Учебный _план

GROUP BY Семестр

Результат:

Семестр

------- -------

1 50

2 54

3 46

4 39

5 37

6 27

7 34

8 44

9 32

(9 row(s) affected)

COUNT()

Функция подсчитывает количество строк в группе (при выполнении группировки) или количество строк результата запроса. Синтаксис:

COUNT({[ALL|DISTINCT<выражение>]|*})

Параметр <выражение> в прстейшем случае представляет собой имя столбца. Если обрабатываемая строка в соответствующем столбце содержит значение не NULL, то счетчик будет увеличен на единицу. Указание символа * предписывает считать общее количество строк независимо от того, содержат ли они значения NULL или нет.

Пример:

SELECT COUNT (*) AS ‘Всего сотрудников’,

COUNT (Телефон) AS ‘С домашним телефоном’

FROM Кадровый_состав

Этот запрос подсчитывает общее количество строк в таблице, а так же количество ненулевых значений в столбце Телефон.

Результат:

Всего сотрудников С домашним телефоном

------------------------ -------------------------------

14 10

(1 row(s) affected)

Пример использования функции COUNT() при выполнении группировки:

SELECT Должность, COUNT(*)

FROM Кадровый_состав

GROUP BY Должность

Данный запрос возвращает количество строк в каждой группе столбца Должность:

------------------- -------------

Ассистент 3

Доцент 4

Зав.каф. 2

Проф. 3

Ст.преп. 2

(5 row(s) affected)

MAX()

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

MAX([ALL|DISTINCT] <выражение>)

Пример:

SELECT MAX(Количество_часов), MAX(Количество_часов/2)

FROM Учебный_план

Результат выполнения запроса:

------------------- -------------

140 70

(1 row(s) affected)

MIN()

Возвращает минимальное значение в указанном диапазоне. Синтаксис:

MIN ([ALL|DISTINCT]<выражение>)

Пример:

SELECT MIN(Количество_часов)

FROM Учебный_план

-----------

(1 row(s) affected)


SUM()

Функция выполняет обычное суммирование значений в указанном диапазоне. В качестве такого диапазона может рассматриваться группа или весь набор строк (без использования GROUP BY)

Синтаксис:

SUM([ALL| DISTINCT] <выражение>)

Пример:

SELECT SUM(Количество_часов), COUNT (*),SUM(Количество_часов)/ COUNT (*),AVG(Количество_часов)

FROM Учебный_план

Результат:

------------- -------------- ------------ ----------

694 89 41 41

(1 row(s) affected)

Пример группировки значений таблицы Учебный_план. Произведем группировку строк по семестрам (столбец Семестр) и подсчитаем общую нагрузку в часах на каждый семестр:

SELECT Семестр, SUM(Количество часов) AS ‘Нагрузка’

FROM Учебный_план

GROUP BY Семестр

В первом столбце выведен номер семестра. Это единственный столбец исходной таблицы, который можно включать в запрос непосредственно, так как по нему осуществляется группировка. Во втором столбце с помощью функции SUM была получена сумма значений столбца Количество_часов. Функции агрегирования работают со всеми строками группы, возвращая единственное значение для всех этих строк.

Семестр Нагрузка
1.  
2.  
3.  
4.  
5.  
6.  
7.  
8.  
9.  

Рассмотрим запрос, подсчитывающий количество экзаменов в каждом семестре:

SELECT Семестр, COUNT(*) AS ‘Экзамены’

FROM Учебный_план

WHERE Отчетность= ‘э’

GROUP BY Семестр

Результат выполнения запроса:

Семестр Экзамены
1.  
2.  
3.  
4.  
5.  
6.  
7.  
8.  
9.  

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: