- •Iso (международной организацией по
- •2 Понимание sql
- •Что такое - реляционная база данных?
- •Порядок строк произволен
- •4 Понимание sql ___________________________________________________________________
- •Идентификация строк ( первичные ключи )
- •Столбцы именуются и нумеруются
- •8 Понимание sql
- •************** Работа с sql **************
- •Sql : обзор
- •Что делает ansi ?
- •Интерактивный и вложенный sql
- •14 Понимание sql
- •Субподразделения sql
- •16 Понимание sql
- •Sql несогласованности
- •Что такое - пользователь?
- •18 Понимание sql
- •Условия и терминология
- •************** Работа с sql **************
- •24 Понимание sql
- •26 Понимание sql
- •Переупорядочение столбца
- •28 Понимание sql
- •Параметры distinct
- •30 Понимание sql
- •32 Понимание sql
- •************* Работа с sql ***************
- •38 Понимание sql
- •40 Понимание sql
- •42 Понимание sql
- •44 Понимание sql
- •Использование специальных операторов в условиях
- •50 Понимание sql
- •52 Понимание sql
- •54 Понимание sql
- •56 Понимание sql
- •************** Работа с sql **************
- •Обобщение данных с помощью агрегатных функций
- •64 Понимание sql
- •66 Понимание sql
- •Включение дубликатов в агрегатные функции
- •Предложение group by
- •68 Понимание sql
- •Предложение having
- •70 Понимание sql
- •72 Понимание sql
- •************** Работа с sql **************
- •Формирование выводов запросов
- •Помещение текста в вашем выводе запроса
- •78 Понимание sql
- •80 Понимание sql
- •82 Понимание sql
- •Упорядочение вывода по номеру столбца
- •84 Понимание sql
- •************** Работа с sql **************
- •Запрашивание многочисленых таблиц также как одной
- •90 Понимание sql
- •92 Понимание sql
- •94 Понимание sql
- •************** Работа с sql **************
- •Объединение таблицы с собой
- •Псевдонимы
- •100 Понимание sql
- •Устранение избыточности
- •102 Понимание sql
- •Больше псевдонимов
- •104 Понимание sql
- •106 Понимание sql
- •************** Работа с sql **************
- •Вставка одного запроса внутрь другого
- •112 Понимание sql
- •114 Понимание sql
- •116 Понимание sql
- •In определяет набор значений, одно из которых должно совпадать с другим
- •118 Понимание sql
- •In является подходящим, если запрос может ограниченно производить одно
- •120 Понимание sql
- •122 Понимание sql
- •*************** Работа с sql *************
- •Соотнесенные подзапросы
- •130 Понимание sql
- •132 Понимание sql
- •Соотнесенные подзапросы в предложении having
- •134 Понимание sql
- •*************** Работа с sql *************
- •Использование оператора exists
- •140 Понимание sql
- •142 Понимание sql
- •144 Понимание sql
- •146 Понимание sql
- •************** Работа с sql **************
- •Использование оператора exists
- •152 Понимание sql
- •154 Понимание sql _____________________________________________________________________
- •156 Понимание sql
- •158 Понимание sql
- •160 Понимание sql
- •162 Понимание sql
- •Использование count вместо exists
- •166 Понимание sql
- •************** Работа с sql **************
************** Работа с sql **************
1. Напишите два запроса которые могли бы вывести все порядки
на 3 или 4 Октября 1990
2. Напишите запрос который выберет всех заказчиков обслуживаемых
продавцами Peel или Motika. ( Подсказка: из наших типовых таблиц,
поле snum связывает вторую таблицу с первой )
3. Напишите запрос, который может вывести всех заказчиков чьи
имена начинаются с буквы попадающей в диапазон от A до G.
4. Напишите запрос который выберет всех пользователей чьи имена
начинаются с буквы C.
5. Напишите запрос который выберет все порядки имеющие нулевые
значения или NULL в поле amt(сумма).
( См. Приложение A для ответов. )
6
Обобщение данных с помощью агрегатных функций
62 ПОНИМАНИЕ SQL
____________________________________________________________________
ГЛ. 6
В ЭТОЙ ГЛАВЕ, ВЫ ПЕРЕЙДЕТЕ ОТ ПРОСТОГО
использования запросов к извлечению значений из базы данных и опре-
делению, как вы можете использовать эти значения чтобы получить
из них информацию. Это делается с помощью агрегатных или общих
функций которые берут группы значений из поля и сводят их до
одиночного значения. Вы узнаете как использовать эти функции, как
определить группы значений к которым они будут применяться, и как
определить какие группы выбираются для вывода. Вы будете также
видеть при каких условиях вы сможете объединить значения поля с
этой полученной информацией в одиночном запросе.
==== ЧТО ТАКОЕ АГРЕГАТНЫЕ ФУНКЦИИ ? =====
Запросы могут производить обобщенное групповое значение полей
точно также как и значение одного поля. Это делает с помощью
агрегатых функций. Агрегатные функции производят одиночное
значение для всей группы таблицы. Имеется список этих функций:
* COUNT
производит номера строк или не-NULL значения полей которые выбрал
запрос.
* SUM
производит арифметическую сумму всех выбранных значений данного
поля.
* AVG
производит усреднение всех выбранных значений данного поля.
* MAX
производит наибольшее из всех выбранных значений данного поля.
* MIN
производит наименьшее из всех выбранных значений данного
поля.
КАК ИСПОЛЬЗОВАТЬ АГРЕГАТНЫЕ ФУНКЦИИ ?
Агрегатные функции используются подобно именам полей в предложении SELECT запроса, но с одним исключением, они берут имена поля как
аргументы. Только числовые поля могут использоваться с SUM и AVG.
С COUNT, MAX, и MIN, могут использоваться и числовые или
CУММИРОВАНИЕ ДАННЫХ
С ПОМОЩЬЮ АГРЕГАТНЫХ ФУНКЦИЙ 63
______________________________________________________________________
символьные поля. Когда они используются с символьными полями,
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;