Пример ______________________________ Значение ____________________
SELECT MAX (SALARY) Нахождение максимальной зарплаты
FROM EMPLOYEE_PAY_TBL;
SELECT MAX (DISTINCT SALARY) Нахождение максимальной зарплаты без учета
FROM EMPLOYEE_PAY_TBL; повторяющихся значений
Подсчитаем максимум всех значений стоимости товаров из таблицы PRODUCT SJTBL.
SELECT MAX(COST)
FROM PRODUCTS_TBL;
MAX(COST)
------------------
59.99
Функция MIN
Функция MIN используется для подсчета минимума для значений заданной группы строк. Значения NULL при этом игнорируются. Можно использовать также ключевое слово DISTINCT, но поскольку повторно встречающиеся значения на значение минимума не влияют, это ключевое слово оказывается в данном случае бесполезным.
MIN([ DISTINCT ] имя_столбца )
Пример _________________________________ Значение _____________________
SELECT MIN (SALARY) Нахождение минимальной зарплаты
FROM EMPLOYEE_PAY_TBL;
SELECT MIN (DISTINCT SALARY) Нахождение минимальной зарплаты без уче-
FROM EMPLOYEE_PAY_TBL; та повторяющихся значений
Подсчитаем минимум всех значений стоимости товаров из таблицы PRODUCTSJTBL.
SELECT MIN(COST)
FROM PRODUCTS_TBL;
MIN(COST)
-----------
1.05
При использовании итоговых функций с ключевым словом DISTINCT не забывайте о том, что в этом случае запрос может возвращать неверные результаты Ведь основной задачей этих функций является получение итоговых подсчетов для всех строк данных таблицы.
Наконец, рассмотрим пример комбинирования итоговых функций с арифметическими операциями.
SELECT COUNT(ORD_NUM), SUM(QTY),
SUM(QTY) / COUNT(ORD_NUM) AVG_QTY
FROM ORDERS_TBL;
COUNT(ORD_NUM) SUM(QTY) AVG_QTY
------------- ------- -------
7 160 22.85743
Здесь подсчитано число заказов, указана общая сумма стоимости всех заказов и с помощью деления второй величины на первую вычислена средняя стоимость заказа. Для представления последней создан псевдоним столбца - AVG_QTY.
Резюме
Итоговые функции несложно использовать и они могут оказаться весьма полезными. Вы теперь знаете, как подсчитать число значений в столбце, число строк в таблице, как найти максимальное или минимальное из всех значений в столбце. Помните о том, что при использовании итоговых функций значение NULL не учитывается - исключением является функция COUNT в формате COUNT (*).
Итоговые функции являются первыми из рассмотренных нами функций SQL, но они не единственные и существует множество других. Итоговые функции используются также для группирования значений, что предполагается рассмотреть в ходе следующего урока. По мере изучения других функций, вы обнаружите, что в основном они имеют похожий синтаксис и что лежащие в их основе концепции достаточно просты.
Вопросы и ответы
Почему при использовании функций MIN и МАХ значениеNULL игнорируется?
Значение NULL означает, что в поле ничего нет.
Почему при использовании функцииCOUNT тип данных не играет значения?
Функция COUNT просто считает строки.
Практикум
Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе текущего урока, в комбинации с идеями из предыдущих уроков. Мы рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б, "Ответы".
Тесты
1. Верно ли следующее утверждение: "Функция AVG возвращает среднее для значений всех строк, включая значения NULL?"
2. Верно ли следующее утверждение: "Функция зим используется для суммирования итоговых значений по столбцам?"
3. Верно ли следующее утверждение: ''Функция COUNT (* ) подсчитывает число всех строк в таблице?"
4. Будут ли работать следующие операторы SELECT? Если нет, то что в них следует исправить?
а. SELECT COUNT *
FROM EMPLOYEE_PAY_TBL;
6. SELECT COUNT(EMPLOYEE_ID), SALARY
FROM EMPLOYEE_PAYJFBL;
B. SELECT MIN(BONUS), MAX(SALARY)
FROM EMPLOYEE_PAY_TBL
WHERE SALARY > 20000;
Упражнения
1. Рассмотрите следующую таблицу PRODUCTS_TBL.
EMP_ID POSITION DATE_HIRE PAV_RATE DATE_LAST SALARY BONUS
311549902 МАРКЕТИНГ 23-МАЙ-89 01-МАЙ-99 30000 2000
442346889 РУК.ГРУППЫ 17-ИЮН-90 14.75 01-ИЮН-99
213764555 МЕНЕДЖЕР 14-АВГ-94 01-АВГ-99 40000 3000
313782439 ПРОДАВЕЦ 28-ИЮН-97 20000 1000
220984332 ДОСТАВКА 22-ИЮЛ-96 11 01-ИЮЛ-99
443679012 ДОСТАВКА 14-ЯНВ-91 15 01-ЯНВ-99
6 строк выбраны.
Постройте операторы SQL, позволяющие найти следующее.
а. Среднюю зарплату (SALARY).
б. Максимальную премию (BONUS).
в. Сумму всех выплат по зарплате.
Читать дальше