
- •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 **************
72 Понимание sql
______________________________________________________________________
ГЛ. 6
Поскольку поля odate нет, не может быть и выбраных полей, значение
этих данных меньше чем в некоторых других примерах.
Вывод должен вероятно включать что-нибудь такое что говорит -
" это - самые большие порядки на 3 Октября." В Главе 7, мы
покажем как вставлять текст в ваш вывод.
Как и говорилось ранее, HAVING может использовать только аргументы
которые имеют одно значение на группу вывода. Практически, ссылки
на агрегатные функции - наиболее общие, но и поля выбранные с помощью
GROUP BY также допустимы. Например, мы хотим увидеть наибольшие
порядки для Serres и Rifkin:
SELECT snum, MAX (amt)
FROM Orders
GROUP BY snum
HAVING snum B (1002,1007);
Вывод для этого запроса показывается в Рисунке 6.9.
=============== SQL Execution Log ==============
| |
| SELECT snum, MAX (amt) |
| FROM Orders |
| GROUP BY snum |
| HAVING snum IN ( 1002, 1007 ); |
| =============================================== |
| snum |
| ------ -------- |
| 1002 5160.45 |
| 1007 1098.16 |
| |
================================================
Рисунок 6. 9: Использование HAVING с GROUP BY полями
НЕ ДЕЛАЙТЕ ВЛОЖЕННЫХ АГРЕГАТОВ
В строгой интерпретации ANSI SQL, вы не можете использовать агрегат
агрегата. Предположим что вы хотите выяснять, в какой день имелась
CУММИРОВАНИЕ ДАННЫХ
С ПОМОЩЬЮ АГРЕГАТНЫХ ФУНКЦИЙ 73
______________________________________________________________________
наибольшая сумма приобретений. Если вы попробуете сделать это,
SELECT odate, MAX ( SUM (amt) )
FROM Orders
GROUP BY odate;
то ваша команда будет вероятно отклонена. ( Некоторые реализации не
предписывают этого ограничения, которое является выгодным, потому
что вложенные агрегаты могут быть очень полезны, даже если они и
несколько проблематичны.) В вышеупомянутой команде, например,
SUM должен применяться к каждой группе поля odate, а MAX ко
всем группам, производящим одиночное значение для всех групп.
Однако предложение GROUP BY подразумевает что должна иметься
одна строка вывода для каждой группы поля odate.
=============== РЕЗЮМЕ ================
Теперь вы используете запросы несколько по-другому. Способность
получать, а не просто размещать значения, очень мощна.
Это означает что вы не обязательно должны следить за определенной
информацией если вы можете сформулировать запрос так чтобы ее
получить. Запрос будет давать вам по-минутные результаты, в то время
как таблица общего или среднего значений будет хороша только некоторое
время после ее модификации. Это не должно наводить на мысль, что
агрегатные функции могут полностью вытеснить потребность в
отслеживании информации такой например как эта.
Вы можете применять эти агрегаты для групп значений определенных
предложением GROUP BY. Эти группы имеют значение поля в целом, и
могут постоянно находиться внутри других групп которые имеют
значение поля в целом. В то же время, предикаты еще используются
чтобы определять какие строки агрегатной функции применяются.
Объединенные вместе, эти особенности делают возможным, производить
агрегаты основанные на сильно определенных подмножествах значений в
поле. Затем вы можете определять другое условие для исключения
определенных результатов групп с предложением HAVING.
Теперь , когда вы стали знатоком большого количества того как
запрос производит значения, мы покажем вам, в Главе 7, некоторые
вещи которые вы можете делать со значениями которые он производит.
74 ПОНИМАНИЕ SQL
______________________________________________________________________
ГЛ. 6