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 |
+----+--------+-----+---------+---------+