|
Программирование >> Исключение дубликатов строк
Show те for each entertainment group the group- name, the count of contracts for the group, the total price of all the contracts, the lowest contract price, the highest contract price, and th average price of all the contracts . ( Показать, для каждой группы эстрадных артистов, название группы, количество контрактов группы, общую сумму стоимости всех контрактов, наименьшую стоимость контракта, наибольшую стоимость контракта и среднюю стоимость всех контрактов) (Совет: Когда в запросе требуется количество, а также наименьшая, наибольшая или средняя величина значений на уровне деталей (контракты) для каждого значения на более высоком уровне (эстрадные артисты), необходимо использовать агрегатные функции и группирование. Помните, что у большинства эстрадных артистов не один контракт.) Преобразование: Select entertainer name, the count of contracts, the sum of the contract price, the lowest contract price, the highest contract price, and the average contract price from the entertainers table joined with the engagements table on entertainer ID, grouped by entertainer name (Выбрать имя эстрадного артиста, количество контрактов, сумму цен контракта, наименьшую стоимость контракта, наибольшую стоимость контракта и среднюю стоимость контракта из таблицы Эстрадные артисты , соединенной с таблицей Ангажементы по идентификатору эстрадного артиста, сгруппированные по имени эстрадного артиста) Select entertainer name, the count of (*) contracts, the sum of the (contract price), the lowest min(contract price), max(contract price), and the average avg(contract price) from the entertainers t bte joined with the engagements table on entertainer ID, grouped by entertainer name (Выбрать имя эстрадного артиста, count (*), sum(цeнa контракта), min(стоимость контракта), max(стоимость контракта) и avg(стоимость контракта) из Эстрадные артисты , соединенной с Ангажементы по идентификатору эстрадного артиста, сгруппированные по имени эстрадного артиста) Уточнение: SELECT Entertainers.EntStageName, COUNT (*) AS NumContracts, SUM (Engagements.ContractPrice) MIN (Engagements.ContractPrice) AS TotPrice, AS MinPrice, МАХ (Engagements.ContractPrice) AS MaxPrice, AVG (Engagements.ContractPrice) AS AvgPrice FRpM Entertainers INNER JOIN Engagements ON Entertainers.EntertainerlD = Engagements.EntertainerlD GROUP BY Entertainers.EntStageName Обратите внимание на сделанную подстановку MIN для наименьшего, МАХ для наибольшего и AVG для среднего значения. Также в запрос включена функция COUNT(*), поскольку нужно подсчитать все строки с ангажементами (контрактами) невзирая на какие-либо значения Null. Добавление условия GROUP BY предоставляет агрегатные вычисления по каждой группе эстрадных артистов в отдельности и, кроме того, позволяет включить имя эстрадного артиста в условие SELECT. (Этот запрос сохранен в учебной базе данных как Aggregate Contract Info By Entertainer.)
Рис. 13.3. Связь между таблицами Customer и Engagements А что делать, если нужно выполнить объединение в группу более чем по одному значению? Рассмотрим эту проблему, но с точки зрения клиентов, а не артистов, и предположим, что нужно отобразить в наборе результатов как фамилию клиента, так и его имя. На рис. 13.3 представлены нужные таблицы. Show те for each customer the customer first and last name, the count of contracts for the customer, the total price of all the contracts, the lowest contract price, the highest contract price, and the average price of all the contracts . ( Показать для каждого клиента имя и фамилию, количество контрактов клиента, общую сумму всех контрактов, наименьигую стоимость контракта, наибольшую стоимость контракта и среднюю стоимость всех контрактов .) Преобразование: Select customer last name, customer first name, the count of contracts, the sum of the contract price, the lowest contract price, the highest contract price, and the average contract price from the customers table joined with the engagements table on customer ID, grouped by customer last name and customer first name (Выбрать фамилию клиента, имя клиента, количество контрактов, сумму цен контракта, наименьшую стоимость Уточнение: контракта, наибольшую стоимость контракта и среднюю стоимость контракта из таблицы Клиенты , соединенной с таблицей Ангажементы по идентификатору клиента, сгруппированные по фамилии и по имени клиента) Select customer last name, customer first name, the count (*) contracts, the sum of the (contract price), the lowest min(contract price), the highest max(contract price), and the average avg(contract price) from the customers table joined with the engagements table on customer ID, grouped by customer last name customer first name (Выбрать фамилию клиента, имя клиента, count (*), $ит(цена контракта), min(стоимость контракта), тах(стоимость контракта) и avg(стоимость контракта) из Клиенты , соединенной с Ангажементы по идентификатору клиента, сгруппированные по фамилии клиента, по имени клиента) SELECT Customers.CustLastName, Customers.CustFirstName, COUNT(*) AS NumContracts, SUM (Engagements.ContractPrice) AS MIN (Engagements.ContractPrice) AS MAX (Engagements.ContractPrice) AS AVG (Engagements.ContractPrice) AS FROM Customers INNER JOIN Engagements OM Customers.CustomersID = Engagements.CustomersID GROUP BY Customers.CustLastName, Customers.CustFirstName Результат будет похож на приведенную ниже таблииу, (Этот запрос сохранен в учебной базе данных как Aggregate Contract Info By Customer.) TotPrice, MinPrice, MaxPrice, AvgPrice
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |