SQL HAVING clause
La clause HAVING
La clause HAVING a été ajouté à SQL parce que le mot clé WHERE ne peut pas être utilisée avec les fonctions d'agrégation.
SQL HAVING Syntaxe
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
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
Exemple SQL HAVING
Nous avons ce qui suit "Commandes" table:
O_ID | OrderDate | OrderPrice | Client |
---|---|---|---|
1 | 12/11/2008 | 1000 | Hansen |
2 | 23/10/2008 | 1600 | Nilsen |
3 | 02/09/2008 | 700 | Hansen |
4 | 03/09/2008 | 300 | Hansen |
5 | 30/08/2008 | 2000 | Jensen |
6 | 04/10/2008 | 100 | Nilsen |
Maintenant, nous voulons trouver le cas échéant des clients ont une commande totale de moins qu'en 2000.
Nous utilisons l'instruction SQL suivante:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
L'ensemble de résultats se présente comme suit:
Client | SUM (OrderPrice) |
---|---|
Nilsen | 1700 |
Maintenant, nous voulons trouver si les clients «Hansen» ou «Jensen» ont une commande totale de plus de 1500.
Nous ajoutons une simple clause WHERE à l'instruction SQL:
SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Hansen' OR Customer='Jensen'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500
WHERE Customer='Hansen' OR Customer='Jensen'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500
L'ensemble de résultats se présente comme suit:
Client | SUM (OrderPrice) |
---|---|
Hansen | 2000 |
Jensen | 2000 |
0 commentaires:
Post a Comment
HELLO VISITORS THANKS FOR YOUR VISIT AND COMMENT