|
Программирование >> Исключение дубликатов строк
Были проанализированы интересные примеры использования GROUP BY в подзапросе, который играет роль фильтра в условии WHERE. Построение запроса с GROUP BY и без использования агрегатных функций является тем же, что и использование DISTINCT в условии SELECT. Необходимо внимательно строить условия GROUP BY, чтобы включить столбцы, а не выражения. Помните, что SQL не принимает во внимание какой-либо информации о первичных ключах. Мы также предупредили об ошибках, которые можно допустить при использовании выражений со столбцами в условии SELECT. Условие GROUP BY является полезным, и мы представили примеры задач, которые можно решить с использованием GROUP BY. Затем были представлены примеры построения запросов, требуюш,их использования условия GROUP BY. Зодочи для сомостоятельного решения Ниже приведены формулировки запросов и имена решений этих запросов в учебных базах данных. Попрактикуйтесь немного и разработайте SQL для кавдого запроса, а затем сверьте свой ответ с запросом, который сохранен нами в этих базах данных. Не беспокойтесь, если ваш синтаксис не совсем точно совпадает с синтаксисом сохраненных запросов,- важно, чтобы набор результатов был тем же. База данных заказов но закупку 1. Show те each vendor and the average by vendor of the number of days to deliver products . ( Показать каждого поставш,ика и среднее количество дней поставки товаров для поставш,ика .) {Совет: Используйте агрегатную функцию AVGn объединение в группу по поставш,ику.) Решение можно найти в Vendor Avg Delivery (10 строк). 2. Display for each product the product name and the total sales . ( Вывести на экран для каждого товара наименование товара и обилий объем продаж .) {Совет: Используйте функцию SUM с вычислением количества, умноженного на цену и сгруппированного по наименованию товара.) Решение можно найти в Sales By Product (38 строк). Бозо донных огентство эстрадных ллероприйтий. 1. Show each agents name, the sum of the contract price for the engagements booked, and the agents total commission . ( Показать имя каждого агента, сумму цен контрактов для заявленных ангажементов и обшую сумму комиссионного вознаграждения агента .) {Совет: Следует перемножить сумму цен контракта и комиссионное вознаграждение агента. Убедитесь, что группирование выполнено по ставке комиссионного вознаграждения!) Решение можно найти в Agent Sales And Commissions (8 строк). Бозо донных лиги игры в боулинг 1. Display for each bowler the bowler name and the average of their raw game scores . ( Вывести на экран, для каждого игрока в боулинг, имя игрока и среднее количество очков за предварительные игры .) {Совет: Используйте агрегатную функцию AVG и объединение в группу по имени игрока в боулинг.) Решение можно найти в Bowler Average (32 строки). Бозо донных росписония зонятий 1. Display by category the category name and the count of classes offered . ( Вывести на экран дисплея список категорий с наименованием категории и количеством предложенных курсов лекций .) {Совет: Используйте функцию COUNT и объединение в группы по наименованию категории.) Решение можно найти в Category Class Count (16 строк). 2. List each staff member and the count of classes each is scheduled to teach . ( Привести список всех штатных сотрудников и количество курсов лекций, которые каждый из них запланировал прочитать .) {Совет: Используйте функцию COUNT и объединение в группы по имени преподавателя.) Решение можно найти в Staff Class Count (23 строки). Бозо донных рецептов 1. If I want to cook all the recipes in my cookbook, how much of each ingredient must I have on hand? ( Если попытаться приготовить все рецепты из поваренной книги, то какое количество каждого компонента необходимо иметь в запасе? ) {Совет: Воспользуйтесь функцией SUM и выполните объединение в группы по названию компонента и описанию единиц измерения количества.) Решение можно найти в Total IngredientsNeeded (65 строк). ilk фильтроция сгруппировонных донных Пусть педагоги ум терзают свой, Грамматик правилами, вздором и ученьем; Уверен я - от выпивки хорошей Лишь глубже станет прозорливость духа . Оливер Голдсмит Вопросы, россмотрипоемые о донной глоое Сужение групп Фильтр: Почувствуйте розницу Использовоние HAVING Примеры опероторов Итоги Зодочи для сомостоятельного решения главе 12 были представлены детали всех агрегатных функций, определенных в стандарте SQL. В главе 13 Мы показали, как запросить систему БД сгруппировать множества строк вместе, а затем высчитать агрегатные значения по каждой группе. Одно из преимуш,еств объединения в группу состоит в том, что можно также отобразить типизированное выражение на основе группирования столбцов для идентификации каждой группы. В этой главе будет уложена на место последняя часть мозаики. После группирования строк и вычисления агрегатных функций часто бывает полезно выполнить дополнительную фильтрацию окончательного результата, используя предикат, по составным вычислениям. Для этого нам потребуется последняя деталь мозаики - условие HAVING. Сужение групп Собрав информацию в группы строк, можно запросить MIN, МАХ, AVG, SUM или COUNT для всех значений в каждой группе. Предположим, что нужно еш,е более уточнить окончательный набор результатов сузить группы,- проверяя одно из агрегатных значений. Рассмотрим простой запрос: Ш0&
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |