Программирование >>  Исключение дубликатов строк 

1 ... 139 140 141 [ 142 ] 143 144 145 ... 152


Уточнение:

Преобразование: Select customer state and the sum of quantity ordered

times quoted price as SumOfOrders from the customers table joined with the orders table on customer ID, and then oined with the order details table on order number where customer state is in the list: WA , OR , CA , grouped by customer state, and having the sum of the orders greater than $ 1 million

(Выбрать штат клиента и сумму заказанного количества, умноженную на объявленную цену, как SumOfOrders из таблицы Клиенты , соединенной с таблицей Заказы по идентификатору клиента, а затем соединенной с таблицей Детали заказа по номеру заказа, где штат клиента находится в списке: WA , ORVCA , сгруппированные по штату клиента и имеющ,ие сумму заказов больше 1 млн долларов)

Select customer state and the sum of (quantity ordered times * quoted price) as SumOfOrders from the customers table joined with the orders table on customer ID, and then

joined with the order details table on order number where customer state ts in the list ( WA , OR , CA ), grouped зу customer state, ttd having the sum of the orders

greater than > $1 million 1000000

(Выбрать штат клиента, сумму (заказанное количество * объявленная цена) как SumOfOrders из Клиенты , соединенной с Заказы по идентификатору клиента, соединенной с Детали заказа по номеру заказа, где штат клиента в: WA , OR , CA , сгруппированные по штату клиента, имеюш,ие сумму заказов > 1 ООО ООО)

SELECT Customers.CustState,

SUM(Order Details.QtjantityOrdered * Order Details.QuotedPrice) AS SumOfOrders

FROM (Customers

INNER JOIN Orders

ON Customers.CustomerlD = Orders. CustomerlD) INNER JOIN Order.Details

ON Orders.OrderNumber = Order Details.OrderNumber WHERE Customers.CustState IN (WA, OR, CA) GROUP BY Customers.CustState HAVING SUM(Order Details.QuantityOrdered * Order.Details.QuotedPrice) > 1000000

Этот запрос сохранен в учебной базе данных как West Coast Big Order States.



Обход лоаушки в HAVING COUNT

Иногда требуется узнать, какие категории элементов имеют меньше, чем определенное количество элементов, например, какие эстрадные группы состоят из двух или менее участников, какие рецепты содержат два или менее молочных компонентов, какие предметы ведут три или менее профессоров, работаюших на полную ставку. Хитрость здесь состоит в том, что такоюе требуется узнать, какие категории имеют ноль элементов.

Рассмотрим запрос, показываюш,ий ловушку, в которую можно попасть:

Show те the subject categories that have three or fewer full professors teaching that subject .

Ha рис. 14.4 представлены таблицы, необходимые для решения этой задачи.

Faculty

Staff ID Title Status Tenured

Faculty Categories

StafftD CategorylD

CPK I CPK

И4


CATEGORrES

CategorylD PK CategoryDescription



Рис. 14.4. Категории предметов и профессорско-преподавательский состав,

читающий по этим категориям

Преобразование:

Уточнение:

Select category description and the count of staff ID as ProfCount from the categories table joined with the faculty categories table on category ID, and then joined with the faculty table on staff ID where title is Professor, grouped by category description, and having the count of staff ID less then 3

(Выбрать описание категории и подсчитать идентификаторы персонала как ProfCount из таблицы Категории , соединенной с таблицей Категории

преподавателей по идентификатору категории, а затем соединенной с таблицей Преподаватели по идентификатору персонала, где должность -

профессор , сгруппированные по описанию категории и имеюшие количество идентификаторов персонала меньше 3)

Select category description and the count of (staff ID) as ProfCount from the categories table joined with the faculty categories table on category ID, and then joined with the faculty table on staff ID where title is = Professor, grouped by category description, me having the count of (staff ID) less then < 3



(Выбрать описание категории, подсчитать (идентификатор персонала) как ProfCount из Категории , соединенной с Категории преподавателей по идентификатору категории, а затем соединенной с Преподаватели по идентификатору персонала.

где должность

профессор , сгруппированные

по описанию категории, имеющие количество (идентификатор персонала) < 3)

SELECT Categories.CategoryDescription,

COUNT(Faculty.Categories.StaffID) AS ProfCount

FROM (Categories

INNER JOIN Faculty Categories

ON Caregories.CategorylD =

Faculty Categories.CategorylD)

INNER JOIN Faculty

ON Faculty.StaffID = Faculty.Categories.StaffID WHERE Faculty.Title = Professor GROUP BY Categories.CategoryDescription HAVING COUNT(Faculty Categories.StaffID) < 3

Subjccts Fcujcr 3 Profcssors UJRONG

Выглядит неплохо, не так ли? Справа приведен набор результатов, возвращенный этим запросом.

Заметили ли вы, что в наборе результатов не указаны категории предметов с нулевым числом профессоров? Причина этого кроется в том, что функция COUNT подсчитывает только строки, оставшиеся в таблице Faculty Categories после фильтрации по всем профессорам, имеющим докторскую степень. Все потенциально нулевые строки были отброшены в условии WHERE!

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

CategoryDescripliori

ProfCount

Accounting

Busmcss

Cx>mpiJtcr Iiilc>nTUtion Systems

Economics

Geography

Hi SI on

joiimalism

Math

Political Science



1 ... 139 140 141 [ 142 ] 143 144 145 ... 152

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика