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


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать неотразимый комплимент Как противостоять манипуляциям мужчин? Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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: 115; Нарушение авторских прав

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