Нельзя использовать агрегатные функции в предложении WHERE, потому что предикаты оцениваются в терминах одиночной строки, а агрегатные функции — в терминах групп строк.
Стандартом SQL определено, что при проведении группирования все отсутствующие значения рассматриваются как равные. Если две строки таблицы в одном и том же группируемом столбце содержат значение NULL и идентичные значения во всех остальных непустых группируемых столбцах, они помещаются в одну и ту же группу.
Пример: SELECT R1.Дисциплина, COUNT(*) FROM R1 GROUP BY R1.Дисциплина Результат:
Можно сосчитать количество сдавших экзамен по какой-либо дисциплине, исключив неопределенные значения из исходного отношения перед группировкой. В этом случае запрос будет выглядеть следующим образом: SELECT R1.Дисциплина, COUNT(*) FROM R1 WHERE R1.Оценка IS NOT NULL GROUP BY R1.Дисциплина
Результат:
Примечание: ALL - Включает все группы и результирующие наборы (даже не имеющие строк), которые удовлетворяют условию поиска заданного в предложении WHERE. Если задан аргумент ALL, для сводных столбцов групп, не удовлетворяющие условию поиска, возвращаются значения NULL.
Пример: USE AdventureWorks; GO SELECT ProductID, AVG(UnitPrice) AS 'Average Price' FROM Sales.SalesOrderDetail WHERE OrderQty > 10 GROUP BY ProductID ORDER BY ProductID; GO Результат:
USE AdventureWorks; GO SELECT ProductID, AVG(UnitPrice) AS 'Average Price' FROM Sales.SalesOrderDetail WHERE OrderQty > 10 GROUP BY ALL ProductID ORDER BY ProductID; GO
Пример. Вычислить средний объем покупок (функция Avg), совершенных каждым покупателем (GROUP BY Клиент.Фамилия). SELECT Клиент.Фамилия, Avg(Сделка.Количество) AS Среднее_количество FROM Клиент INNER JOIN Сделка ON Клиент.КодКлиента=Сделка.КодКлиента
GROUP BY Клиент.Фамилия Пример. Определить, на какую сумму был продан товар каждого наименования. SELECT Товар.Название, Sum(Товар.Цена*Сделка.Количество) AS Стоимость FROM Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара GROUP BY Товар.Название
Пример. Подсчитать количество сделок, осуществленных каждой фирмой. SELECT Клиент.Фирма, Count(Сделка.КодСделки)
Читайте также: A) функции государства Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|