|
Программирование >> Sql: полное руководство
Многие запросы к базе данных не нуждаются в той степени детализации, которую обеспечивают SQL-запросы, рассмотренные в двух предыдущих главах. Например, во всех перечисленных ниже запросах требуется узнать всего одно или несколько значений, которые подытоживают информацию, содержащуюся в базе данных Какова общая сумма плановых объемов продаж для всех служащих? Каковы наибольший и наименьший плановые объемы продаж? Сколько служащих перевыполнили свой план? Какова средняя стоимость заказа? Какова средняя стоимость заказа в каждом офисе? Сколько служащих закреплено за каждым офисом? В SQL запросы такого типа можно создавать с помощью статистических функций и предложений group by и having инструкции select, описанных в настоящей главе. Статистические функции Для подведения итогов по информации, содержащейся в базе данных, в SQL предусмотрены статистические (агрегатные) функции. Статистическая функция принимает в качестве аргумента какой-либо столбец данных целиком, а возвращает одно значение, которое определенным образом подытоживает этот столбец. Например, функция avg() принимает в качестве аргумента столбец чисел и вычисляет их среднее значение. Ниже приведен запрос, в котором функция avg () используется для вычисления среднего значения в двух столбцах таблицы salesreps: Каковы средний плановый и средний фактический объемы продаж в нашей компании ? SELECT AVG(QUOTA), AVG(SALES) FROM SALESREPS AVG(QUOTA) AVG (SALES) $300,000.00 $289,353.20 Ha рис. 8.1 изображена схема выполнения такого запроса. Первая статистическая функция принимает в качестве аргументов все значения, содержащиеся в столбце quota, и вычисляет их среднее значение; вторая функция подсчитьшает среднее значение столбца sales Результатом запроса является одна строка, представляющая итоги по информации, содержащейся в таблице salesreps Как представлено на рис 8 2, в SQL имеется шесть статистических функций, которые позволяют получать различные виды итоговой информации: функция sum () вычисляет сумму всех значений столбца; функция avg () вычисляет среднее всех значений столбца; функция min о находит наименьшее среди всех значений столбца; функция МАХ () находит наибольшее среди всех значений столбца; функция count () подсчитывает количество значений, содержащихся в столбце; функция count (*) подсчитывает количество строк в таблице результатов запроса. Таблица SALESREPS
Рис 8 1. (Шовый запрос в действии -SUM- -AVG - выражение - I- DISTINCT имя столбча -J - выражение - I- DISTINCT имя стол6ца -I - MIN (выражение) - MAX (выражение) -COUNT ( - - имя столбца ) 1- DISTINCT-I COUNT (.)- Phc 8.2. Синтоксич чограммахВтисгических функций Аргументом статистической функции может быть простое имя столбца, как в предыдущем примере, или выражение, как в следующем запросе Каков средний процент выполнения плана в нашей компании ? SELECT AVG(100 * (SALES/QUOTA)) FROM SALESREPS AVG(100 * (SALES/QUOTA)) 102.60 При выполнении этого запроса СУБД создает временный столбец, содержащий значения 100 * (sales/quota) для каждой строки таблицы salesreps, а затем вычисляет среднее значение временного столбца. Вычисление суллмы значений столбца (функция SUM) Статистическая функция sum() вычисляет сумму всех значений столбца. При этом столбец должен иметь числовой тип данных (содержать целые числа, десятичные числа, числа с плавающей запятой или денежные величины). Результат, возвращаемый этой функцией, имеет тот же тип данных, что и столбец, однако точность результата может быть выще. Например, если применить функцию sum() к столбцу, содержащему 16-разрядные целые числа, она может вернуть в качестве результата 32-разрядное целое число. Ниже приведен ряд примеров, в которых используется функция sum () : Каковы общий плановый и общий фактический объемы продаж в нашей компании ? SELECT SUM(QUOTA), SUM(SALES) FROM SALESREPS SUM(QUOTA) SUM(SALES) $2,700,000.00 $2,893,532.00 Какова сумма всех заказов, принятых Биллом Адамсом (Bill Adams)? SELECT SUM(AMOUNT) FROM ORDERS, SALESREPS WHERE NAME = Bill Adams AND REP = EMPLNOM SUM(AMOUNT) $35,582.00 Вычисление среднего значения столбца (функция AVG) Статистическая функция avg () вычисляет среднее всех значений столбца. Как и в случае с функцией sum (), данные, содержащиеся в столбце, должны иметь числовой тип. Поскольку функция avg () вначале суммирует все значения, содержащиеся в столбце, а затем делит сумму на число этих значений, возвращаемый ею результат может иметь не такой тип данных, как столбец. Например, если применить функцию avg () к столбцу целых чисел, результат будет либо десятичным числом, либо числом с плавающей запятой, в зависимости от используемой СУБД. Ниже приведено несколько примеров использования функции avg (): Вычислить среднюю цену товаров от производителя ACI.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |