Главная SQL Having
E-mail Печать PDF

HAVING - добавлена в SQL поскольку условие WHERE не может использовать функции.

Синтаксис SQL HAVING

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

Пример SQL HAVING

Есть следующая таблица "Orders":

O_IdOrderDateOrderPriceCustomer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen

Теперь мы хотим найти, какой из клиентов имеет сумму заказа меньшую 2000.

Выполним запрос:

1
2
3
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

Результат запроса:

CustomerSUM(OrderPrice)
Nilsen 1700

Теперь мы хотим узнать, имеют ли клиенты "Hansen" и "Jensen" заказ на сумму более 1500.

Выполним запрос:

1
2
3
4
SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Hansen' OR Customer='Jensen'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

Результат запроса:

CustomerSUM(OrderPrice)
Hansen 2000
Jensen 2000

Комментарии

 
+7 #1 Шелест Константин 2010-10-29 01:04 ай я яй!!! ERROR !!!

SELECT Customer,SUM(Or derPrice) FROM Orders - (Orders) а вы таблицу назвали "Persons" !!! Исправьте ошибку, а то миллионы чайников потеряются, а зачем это вам!!!!?…
Цитировать
 
 
-5 #2 Алекс 2010-11-19 16:39 ИСПРАВЬ, ВАСИЛИЙ!!! Цитировать
 
 
+4 #3 KJHJ 2010-12-14 09:02 [quote name="Алекс"]ИСПРАВЬ, ВАСИЛИЙ!!![/quo
сам дурак
Цитировать
 
 
0 #4 KJHJ 2010-12-14 09:03 Лёха не спи Цитировать
 
 
+1 #5 Arai 2011-03-30 06:58 все понятно!!!! спасибо большое!!!! Цитировать
 
 
-1 #6 SERG_ 2011-04-11 13:49 Ничё не понятно.
Теперь мы хотим найти, какой из клиентов имеет сумму заказа меньшую 2000.
и выводит 1 строку с суммой 1700 (Nilsen).
В самой таблице и близко такой суммы нет.
Как она появилась или высчиталась?
Как по мне, то должно вывестись 5 строк, за исключением строки, в которой сумма ровно 2000.
Или я не прав?
Тогда объясните.
Цитировать
 
 
-1 #7 TheDreamCatcher 2011-04-24 08:29 Цитата:
HAVING - добавлена в SQL поскольку условие WHERE не может использовать функции.

WHERE YEAR(ДАТА)=1996
А это что??? пишите грамотнее
Цитировать
 
 
+2 #8 Yury 2011-05-17 12:46 to SERG_

считаем SUM(OrderPrice) , т.е. сумму (OrderPrice) для каждого Customer'а.

Имеем две записи для Nilsen: 1600 и 100. SUM(OrderPrice) =1700
Цитировать
 
 
0 #9 Andrey 2011-08-22 22:48 Отлично! Все понятно Цитировать
 
 
0 #10 Xzels 2012-04-12 13:43 Здравствуйте, вот такая беда, не могу в один запрос сделать выборку из таблицы, мне необходимо выбрать всё с минимальной датой,
причём код, цена, количество у одного товара может быть разным, то есть мне необходимо выбрать из таблицы только тот товар, которого количество больше 0 и дата прихода минимальная
Цитировать
 

Авторизация

Nice Ajax Poll

Какое из моих расширений самое лучшее?

Статистика



Реклама