Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Агрегатные функции без использования фразы GROUP BY





Если не используется фраза GROUP BY, то в перечень элементов_SELECT можно включать лишь агрегатные функции или выражения, содержащие такие функции. Другими словами, нельзя иметь в списке столбцы, не являющихся аргументами агрегатных функций.

Пример 12.

Выдать данные о блюде (Блюдо=10), указать количество ингредиентов и их суммарный вес:

SELECT COUNT(Продукт) as Количество, SUM(Вес) as Вес

Результат  
Количество Вес
   

FROM Состав

WHERE Блюдо = 10;

При выполнении запроса

SELECT Блюдо, COUNT(Продукт), SUM(Вес)

FROM Состав
WHERE Блюдо = 10;

будет получено сообщение об ошибке:

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 Состав
WHERE Блюдо = 10;

 

Отметим также, что в столбце-аргументе перед применением любой функции, кроме COUNT(*), исключаются все неопределенные значения. Если оказывается, что аргумент - пустое множество, функция COUNT принимает значение 0, а остальные - NULL.

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

SELECT ’01.02.2011’ as Дата,

COUNT(DISTINCT ID_заказ) as Кол_заказов,

COUNT(DISTINCT блюдо) as Кол_блюд,

SUM(Количество_порций) as Кол_порций







Date: 2015-09-18; view: 502; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию