SQL - clausola di avere
Il HAVING Clause consente di specificare le condizioni che filtrano i risultati del gruppo visualizzati nei risultati.
La clausola WHERE pone condizioni sulle colonne selezionate, mentre la clausola HAVING pone condizioni sui gruppi creati dalla clausola GROUP BY.
Sintassi
Il seguente blocco di codice mostra la posizione della clausola HAVING in una query.
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
La clausola HAVING deve seguire la clausola GROUP BY in una query e deve anche precedere la clausola ORDER BY, se utilizzata. Il seguente blocco di codice ha la sintassi dell'istruzione SELECT inclusa la clausola HAVING -
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
Esempio
Considera la tabella CLIENTI con i seguenti record.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Di seguito è riportato un esempio, che visualizzerebbe un record per un conteggio di età simile che sarebbe maggiore o uguale a 2.
SQL > SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
GROUP BY age
HAVING COUNT(age) >= 2;
Ciò produrrebbe il seguente risultato:
+----+--------+-----+---------+---------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+--------+-----+---------+---------+
| 2 | Khilan | 25 | Delhi | 1500.00 |
+----+--------+-----+---------+---------+