Пример 6.8. Подсчет общей стоимости проданных товаров.
Пример 6.7. Определение средней цены проданного товара.
Пример 6.6. Определение суммарного количества проданного товара.
Пример 6.5. Определить количество сделок.
Пример 6.4. Определение первого по алфавиту названия товара.
Пример 6.5. Определить количество сделок.
SELECT Count(*) AS Количество_сделок
FROM Сделка
Пример 6.6. Определить суммарное количество проданного товара.
SELECT Sum(Сделка.Количество)
AS Количество_товара
FROM Сделка
Пример 6.7. Определить среднюю цену проданного товара.
SELECT Avg(Товар.Цена) AS Avg_Цена
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара;
Пример 6.8. Подсчитать общую стоимость проданных товаров.
SELECT Sum(Товар.Цена*Сделка.Количество)
AS Стоимость
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара
Часто в запросах требуется формировать промежуточные итоги, что обычно отображается появлением в запросе фразы "для каждого...". Для этой цели в операторе SELECTиспользуется предложение GROUP BY. Запрос, в котором присутствует GROUP BY, называется группирующим запросом, поскольку в нем группируются данные, полученные в результате выполнения операции SELECT, после чего для каждой отдельной группы создается единственная суммарная строка. Стандарт SQL требует, чтобы предложениеSELECT и фраза GROUP BY были тесно связаны между собой. При наличии в операторе SELECT фразы GROUP BY каждый элемент списка в предложении SELECT должен иметь единственное значение для всей группы. Более того, предложение SELECT может включать только следующие типы элементов: имена полей, итоговые функции, константы и выражения, включающие комбинации перечисленных выше элементов.
Все имена полей, приведенные в списке предложения SELECT, должны присутствовать и во фразе GROUP BY - за исключением случаев, когда имя столбца используется витоговой функции. Обратное правило не является справедливым - во фразе GROUP BY могут быть имена столбцов, отсутствующие в списке предложения SELECT.
Если совместно с GROUP BY используется предложение WHERE, то оно обрабатывается первым, а группированию подвергаются только те строки, которые удовлетворяют условию поиска.
Стандартом SQL определено, что при проведении группирования все отсутствующие значения рассматриваются как равные. Если две строки таблицы в одном и том же группируемом столбце содержат значение NULL и идентичные значения во всех остальных непустых группируемых столбцах, они помещаются в одну и ту же группу.
Пример 6.9. Вычислить средний объем покупок, совершенных каждым покупателем.