Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Агрегатные функции без использования фразы GROUP BY
Если не используется фраза GROUP BY, то в перечень элементов_SELECT можно включать лишь агрегатные функции или выражения, содержащие такие функции. Другими словами, нельзя иметь в списке столбцы, не являющихся аргументами агрегатных функций. Пример 12. Выдать данные о блюде (Блюдо=10), указать количество ингредиентов и их суммарный вес: SELECT COUNT(Продукт) as Количество, SUM(Вес) as Вес
FROM Состав WHERE Блюдо = 10; При выполнении запроса SELECT Блюдо, COUNT(Продукт), SUM(Вес) FROM Состав будет получено сообщение об ошибке: Column 'Состав.Блюдо' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. Это связано с тем, что агрегатная функция создает единственное значение из множества значений столбца-аргумента, а для "свободного" столбца должно быть выдано все множество его значений. Без специального указания (оно задается фразой GROUP BY) SQL не будет выяснять, одинаковы значения этого множества (как в данном примере, где Блюдо = 10) или различны (как было бы при отсутствии WHERE фразы). Поэтому подобный запрос отвергается системой. Правда, никто не запрещает дать запрос
SELECT 'Блюдо 10', COUNT(Продукт), SUM(Вес) FROM Состав
Отметим также, что в столбце-аргументе перед применением любой функции, кроме COUNT(*), исключаются все неопределенные значения. Если оказывается, что аргумент - пустое множество, функция COUNT принимает значение 0, а остальные - NULL. Например, для получения общего количества заказов, количества различных блюд и общего количества порций на указанную дату можно написать запрос SELECT ’01.02.2011’ as Дата, COUNT(DISTINCT ID_заказ) as Кол_заказов, COUNT(DISTINCT блюдо) as Кол_блюд, SUM(Количество_порций) as Кол_порций Date: 2015-09-18; view: 502; Нарушение авторских прав |