Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М. ГРУБЕР_SQL.doc
Скачиваний:
22
Добавлен:
18.04.2019
Размер:
1.4 Mб
Скачать

Работа с sql

  1. Напишите два запроса, которые могли бы вывести все Заказы на 3 или 4 Октября 1990

  2. Напишите запрос, который выберет всех заказчиков, обслуживаемых продавцами Peel или Motika. (Подсказка: из наших типовых таблиц, поле snum связывает вторую таблицу с первой)

  3. Напишите запрос, который может вывести всех заказчиков, чьи имена начинаются с буквы попадающей в диапазон от A до G.

  4. Напишите запрос, который выберет всех пользователей, чьи имена начинаются с буквы C.

  5. Напишите запрос который выберет все Заказы, имеющие нулевые значения или NULL в поле amt (сумма).

(См. Приложение A для ответов.)

6

Обобщение данных с помощью агрегатных функций

В ЭТОЙ ГЛАВЕ ВЫ ПЕРЕЙДЕТЕ ОТ ПРОСТОГО использования запросов к извлечению значений из базы данных и определению, как вы можете использовать эти значения, чтобы получить из них информацию. Это делается с помощью агрегатных или общих функций, которые берут группы значений из поля и сводят их до одиночного значения. Вы узнаете, как использовать эти функции, как определить группы значений, к которым они будут применяться, и как определить, какие группы выбираются для вывода. Вы будете также видеть, при каких условиях вы сможете объединить значения поля с этой полученной информацией в одиночном запросе.

Что такое агрегатные функции?

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

COUNT производит номера строк или не NULL значения полей, которые выбрал запрос.

SUM производит арифметическую сумму всех выбранных значений данного поля.

AVG производит усреднение всех выбранных значений данного поля.

MAX производит наибольшее из всех выбранных значений данного поля.

MIN производит наименьшее из всех выбранных значений данного поля.

Как использовать агрегатные функции?

Агрегатные функции используются подобно именам полей в предложении SELECT запроса, но с одним исключением, они берут имена поля как аргументы. Только числовые поля могут использоваться с SUM и AVG.

С COUNT, MAX, и MIN, могут использоваться и числовые или символьные поля. Когда они используются с символьными полями, MAX и MIN будут транслировать их в эквивалент ASCII, который должен сообщать, что MIN будет означать первое, а MAX последнее значение в алфавитном порядке (выдача алфавитного упорядочения обсуждается более подробно в Главе 4).

Чтобы найти SUM всех наших покупок в таблицы Заказов, мы можем ввести следующий запрос, с его выводом в Рисунке 6.1:

SELECT SUM (amt) FROM Orders;

=============== SQL Execution Log ============ | SELECT SUM (amt) | | FROM Orders; | | ==============================================| | | | ------- | | 26658.4 | =============================================== Рисунок 6.1. Выбор суммы.

Это, конечно, отличается от выбора поля, при котором возвращается одиночное значение, независимо от того, сколько строк находится в таблице. Из-за этого, агрегатные функции и поля не могут выбираться одновременно, пока не будет использовано предложение GROUP BY (описанное далее). Нахождение усредненной суммы — это похожая операция (вывод следующего запроса показывается в Рисунке 6.2):

SELECT AVG (amt) FROM Orders;

=============== SQL Execution Log ============ | SELECT AVG (amt) | | FROM Orders; | | ==============================================| | | | ------- | | 2665.84 | =============================================== Рисунок 6.2. Выбор среднего.