Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Не делайте вложенных агрегатов




В строгой интерпретации ANSI SQL, вы не можете использовать агрегат агрегата. Предположим, что вы хотите выяснять, в какой день имелась наибольшая сумма приобретений. Если вы попробуете сделать это,

SELECT odate, MAX (SUM (amt))
FROM Orders
GROUP BY odate;

то ваша команда будет, вероятно, отклонена (некоторые реализации не предписывают этого ограничения, которое является выгодным, потому что вложенные агрегаты могут быть очень полезны, даже если они и несколько проблематичны). В вышеупомянутой команде, например, SUM должен применяться к каждой группе поля odate, а MAX ко всем группам, производящим одиночное значение для всех групп. Однако, предложение GROUP BY подразумевает, что должна иметься одна строка вывода для каждой группы поля odate.

Резюме

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

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

Объединенные вместе, эти особенности делают возможным производить агрегаты, основанные на сильно определенных подмножествах значений в поле. Затем вы можете определять другое условие для исключения определенных результатов групп, включая предложение HAVING.

Теперь, когда вы стали знатоком большого количества того, как запрос производит значения, мы покажем вам, в Главе 7, некоторые вещи которые вы можете делать со значениями, которые он производит.

Работа с SQL

1. Напишите запрос, который сосчитал бы все суммы приобретений на 3 Октября.

2. Напишите запрос, который сосчитал бы число различных, отличных от NULL значений поля city в таблице Заказчиков.

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

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

5. Напишите запрос, который выбрал бы высшую оценку в каждом городе.

6. Напишите запрос, который сосчитал бы число заказчиков, регистрирующих каждый день свои Заказы. (Если продавец имел более одного Заказа в данный день, он должен учитываться только один раз.)

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


Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...