Наиболее часто применяемые агрегатные функции
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Наименование функции Назначение  
AVG Вычисление среднего значения
COUNT Вычисление количества строк
MAX Вычисление максимального значения
MIN Вычисление минимального значения
SUM Вычисление суммы значений

Простейшая группировка

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

На рис. 7.88 представлен пример простейшей группировки.

 

Рис. 7.88. Простейшая группировка с помощью агрегатных функций

 

Следует обратить внимание, что в запросе на рис. 7.88 в SELECT-списке нельзя указывать наименования столбцов, а только агрегатные функции или константы, т. к. результирующий набор представляет собой одну строку (строки сгруппировались в одну строку).

К простейшей группировке относят группировку по значениям одного столбца. На рис. 7.89 представлен пример SELECT-запроса, применяющего группировку строк таблицы PULPIT по значениям столбца FACULTY.

 

Рис. 7.89. Пример группировки по значениям одного столбца

Результирующий набор, полученный после выполнения SELECT-запроса, представленного на рис. 7.89, позволяет выявить, что в столбце FACULTY таблицы PULPIT содержится 6 различных значений (включая NULL); в столбце Количество кафедр с помощью агрегатной функции COUNTподсчитывается количество строк в таблице PULPIT с соответствующим значением (столбец Код факультета) столбца FACULTY; сумма чисел в столбце Количество кафедр равна количеству строк в таблице PULPIT. В последнем легко убедиться, если выполнить запрос, представленный на рис. 7.90.

 

 

Рис. 7.90. Вычисление количества строк в таблице PULPIT

 

Обратите внимание (рис. 7.89) на то, что при применении GROUP BY в SELECT-списке допускается указывать только те столбцы, по которым осуществляется группировка.

 

Группировка по выражению

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

 

 

Рис. 7.91. Группировка строк таблицы PROGRESS
по двум столбцам PDATE, SUBJECT

Количество групп, сформированных секцией GROUP BY в SELECT-запросе на рис. 7.91, равно количеству сочетаний значений из столбцов PDATA и SUBJECT строк таблицы PROGRESS. Например, сочетание значений 2013-01-19 и OX встречается в таблице 6 раз (вычисляется с помощью агрегатной функции COUNT), а максимальное значение в столбце NOTE среди строк этой группы равно 9.

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

Рис. 7.92. Группировка строк таблицы STUDENT по значению,
 возвращаемому функцией

Встроенная функция MONTH в секции GROUP BY применима к типам данных, используемых для хранения даты, и возвращает номер месяца. В запросе на рис. 7.92 группировка строк таблицы STUDENT осуществляется по номеру месяца. Кроме того, для каждой группы подсчитывается количество строк (COUNT) и доля (в процентах) количества строк.

При применении выражений в секции GROUP BY в списке SELECT помимо агрегатных функций допускается указывать точно такие же выражения.

Следует обратить внимание, что при вычислении процента (рис. 7.92) применяется целочисленная арифметика, которая приводит к значительной погрешности. Запрос на рис. 7.93 подсчитывает две суммы: сумму процентов, вычисленных с применением целочисленной арифметики, и сумму процентов, вычисленных на базе чисел с дробной частью.

 

Рис. 7.93. Погрешность вычислений с помощью целочисленной арифметики (может быть значительной

На рис. 7.94 представлен пример еще одного SELECT-запроса, применяющего выражение в секции GROUP BY.

 

Рис. 7.94. Применение выражения в секции GROUP BY

Выражение в секции GROUP BY (рис. 7.94) применяет к значениям двух столбцов встроенную функцию RTRIM (удаление в строке пробелов справа) и выполняет конкатенацию (символ + для строк). Кроме того, для каждой сформированной таким образом строки осуществляется подсчет количества не равных NULL значений в столбце SUBJECT.



Дата: 2019-02-25, просмотров: 238.