Итоговые функции
Довольно часто требуется узнать, сколько записей соответствует тому или иному запросу, какова сумма значений некоторого числового столбца, его максимальное, минимальное и среднее значения. Для этого служат так называемые итоговые (статистиче- ские, агрегатные) функции. Итоговые функции обрабатывают наборы записей, заданные, например, выражением WHERE. Если их включить в список столбцов, следующий за оператором SELECT, то результатная таблица будет содержать не только столбцы таблицы базы данных, но и значения, вычисленные с помощью этих функций. Далее приведен список итоговых функций. · COUNT(параметр) — возвращает количество записей, указанных в параметре. Если требуется получить количество всех записей, то в качестве параметра следует указать символ звездочки (*), Если в качестве параметра указать имя столбца, то функция вернет количество записей, в которых этот столбец имеет значения, отличные от NULL. Чтобы узнать, сколько различных значений содержит столбец, перед его именем следует указать ключевое слово DISTINCT. Например: SELЕСТ COUNT (*) FROM Клиенты;. SELECT COUNT (Сумма_заказа) FROM Клиенты; SELECT COUNT(DISTINCT Сумма_заказа) FROM Клиенты; Попытка выполнить следующий запрос приведет к сообщению об ошибке: SELECT Регион, COUNT(*) FROM Клиенты; · SUM (параметр } — возвращает сумму значений указанного в параметре столбца. Параметр может представлять собой и выражение, содержащее имя столбца. Например: SELECT SUM(Сумма_заказа) FROM Клиенты; Данное SQL-выражение возвращает таблицу, состоящую из одного столбца и одной записи и содержащую сумму всех определенных значений столбца Сумма_заказа из таблицы Клиенты. Допустим, что в исходной таблице значения столбца Сумма_заказа выражены в рублях, а нам требуется вычислить общую сумму в долларах. Если текущий обменный курс равен, например, 32,8, то получить требуемый результат можно с помощью выражения: SELECT SUM(Сумма_заказа/32.8) FROM Клиенты; · AVG(параметр) — возвращает среднее арифметическое всех значений указанного в параметре столбца. Параметр может представлять собой выражение, содержащее имя столбца. Например: SELECT AVG (Сумма_заказа) FROM Клиенты; SELECT AVG(Сумма_заказа/32.8) FROM Клиенты WHERE Регион <> 'Северо_Запад'; · Мах(параметр) — возвращает максимальное значение в столбце, указанном в параметре. Параметр может также представлять собой выражение, содержащее имя столбца. Например: SELECT МАХ(Сумма_заказа) FROM Клиенты; SELECT МАХ(Сумма_заказа*32.8) FROM Клиенты WHERE Регион <> 'Северо_Запад'; MIN(параметр) — возвращает минимальное значение в столбце, указанном в параметре. Параметр может представлять собой выражение, содержащее имя столбца. Например: SELECT MIN(Сумма_заказа) FROM Клиенты; SELECT MIN(Сумма_заказа*32,8) FROM Клиенты WHERE Регион <> 'Северо_Запад'; На практике нередко требуется получить итоговую таблицу, содержащую суммарные, усредненные, максимальные и минимальные значения числовых столбцов. Для этого следует испольэовать группировку (GROUP BY) и итоговые функции. SELECT Регион, SUM(Сумма_заказа) FROM Клиенты GROUP BУ Регион; Результатная таблица для данного запроса содержит имена регионов и итоговые (общие) суммы заказов всех клиентов из соответствующих регионов. Теперь рассмотрим запрос на получение всех итоговых данных по регионам: SELECT Регион, SUM(Сумма_заказа), AVG(Сумма_заказа), МАХ(Сумма_заказа), MIN(Сумма_заказа) FROM Клиенты GROUP BY Регион; При использовании итоговых функций в списке столбцов в операторе SELECT заголовки соответствующих им столбцов в таблице результата имеют вид Ехрг1001, Ехрг1002 и т. д. (или что- нибудь аналогичное, в зависимости от реализации SQL). Однако заголовки для значений итоговых функций и других столбцов вы можете задавать по своему усмотрению. Для этого достаточно после столбца в операторе SELECT указать выражение вида: AS заголовок столбца Ключевое слово AS (как) означает, что в результатной таблице соответствующий столбец должен иметь заголовок, указанный после AS. Назначаемый заголовок еще называют псевдонимом. В следующем примере задаются псевдонимы для всех вычисляемых столбцов: SELECT Регион, SUM(Сумма_заказа) АS [общая сумма заказа], AVG(Сумма_заказа) AS [Средняя сумма заказа], МАХ(Сумма_заказа) АS Максимум, MIN(Сумма_заказа) AS Минимум FROM Клиенты GROUP BY Регион; Псевдонимы, состоящие из нескольких слов, разделенных пробелами, заключаются в квадратные скобки. Итоговые функции можно использовать в выражениях SELECT и HAVING, но их нельзя применять в выражении WHERE. Оператор HAVING аналогичен оператору WHERE но в отличие от WHERE он отбирает записи в группах. Допустим, требуется определить, в каких регионах более одного клиента. С этой целью можно воспользоваться таким запросом: SELECT Регион, Count(*) FROM Клиенты GROUF BY Регион HAVING COUNT(*) >. 1;
|