Программирование >>  Построение запросов sql 

1 ... 26 27 28 [ 29 ] 30 31 32 ... 101


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

3.2.3.3. Агрегатные функции

3.2.3.3.1. Общее описание агрегатных функций

Для подведения итогов по данным, содержащимся в БД, в языке SQL предусмотрены агрегатные (статистические) функции. Агрегатная функция берет в качестве аргумента какой-либо столбец (для множества строк), а возвращает одно значение, определяемое типом функции:

AVG - среднее значение в столбце;

SUM - сумма значений в столбце;

MAX - наибольшее значение в столбце;

MIN - наименьшее значение в столбце;

COUNT - количество значений в столбце.

Аргументами агрегатных функций могут быть как столбцы таблицы, так и результаты выражений над ними. При этом выражение может быть сколь угодно сложным.

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

Для функций SUM и AVG столбец должен содержать числовые значения.

Специальная функция COUNT (*) служит для подсчета всех без исключения строк в таблице (включая дубликаты).

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

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

3.2.3.3.2. Вычисление среднего значения

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

AVG ({[ALL] столбец DISTINCT столбец} <выражение>).



При указании аргумента ALL происходит вычисление по всем значениям. Если указан аргумент DISTINCT, то перед вычислением среднего значения из рассмотрения исключаются дублирующиеся значения. Если число строк, обрабатываемых агрегатной функцией AVG, равно нулю, то функция возвращает NULL. Выражение представляет собой скалярное численное выражение языка SQL.

Например, чтобы вычислить среднее значение оплат всех абонентов, необходимо выполнить следующий запрос:

SELECT AVG(Paysum) FROM Paysumma;.

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

45,17

Рис. 3.35. Результат работы функции AVG

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

SELECT AVG(NachislSum+2) FROM NachislSumma;.

При вычислении среднего к каждому суммируемому значению NachislSum добавляется число 2, а затем полученная сумма делится на количество значений. В результате выполнения данного запроса будет возвращено число

47,17.

3.2.3.3.3. Вычисление суммы значений в столбце

Для вычисления суммы значений, содержащихся в столбце, используется агрегатная функция SUM. При этом столбец должен иметь числовой тип данных. Результат, возвращаемый этой функцией, имеет тот же тип данных, что и столбец, но количество значащих цифр может быть больше, чем количество значащих цифр отдельных значений в столбце. Использование этой функции аналогично использованию функции AVG. Синтаксис использования функции SUM следующий:

SUM ({[ALL] столбец DISTINCT столбец}).

Например, для нахождения суммы всех значений начислений можно использовать следующий запрос:

SELECT SUM(NachislSum) FROM NachislSumma;.

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

2 213,61



250,00

8,30

Рис. 3.37. Результат работы функций MAX и MIN

3.2.3.3.5. Вычисление количества значений в столбце

Количество значений в столбце подсчитывает функция COUNT. При этом тип данных столбца может быть любым. Синтаксис использования этой агрегатной функции следующий:

COUNT ({ * [ALL] столбец DISTINCT столбец}).

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

Например, чтобы подсчитать количество строк в таблице Abonent, можно использовать следующий запрос:

SELECT COUNT(*) FROM Abonent;.

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

SELECT COUNT(DISTINCT AccountCD) FROM Request;.

Для нахождения наименьшего или наибольшего значения в столбце используются агрегатные функции - соответственно MIN или MAX. При этом столбец может содержать числовые и строковые значения либо значения даты/времени. Синтаксис использования агрегатных функций по нахождению максимального и минимального значения следующий:

MAX ({[ALL] столбец DISTINCT столбец}),

MIN ({[ALL] столбец DISTINCT столбец}).

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

В случае применения функций MIN и MAX к числовым данным числа сравниваются по арифметическим правилам.

Сравнение дат происходит последовательно: более ранние значения дат считаются меньшими, чем более поздние.

Сравнение интервалов времени выполняется на основании их продолжительности: более короткие интервалы времени меньше, чем более длинные.

Например, чтобы найти в таблице PaySumma максимальное и минимальное значения оплат можно выполнить следующий запрос:

SELECT MAX(PaySum), MIN(PaySum) FROM PaySumma;.

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



1 ... 26 27 28 [ 29 ] 30 31 32 ... 101

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика