Powered By Blogger

4 novembre 2008

Approfondimenti su SQL: clausole where, having, group by


Le clausole WHERE e HAVING di un'istruzione SELECT consentono di specificare le righe delle tabelle di origine con cui generare il set di risultati. Entrambe le clausole sono filtri che specificano una serie di condizioni di ricerca. Solo le righe che soddisfano tali condizioni verranno incluse nel set di risultati. Tali righe sono definite qualificate per partecipare al set di risultati.

La clausola HAVING viene generalmente utilizzata insieme alla clausola GROUP BY per filtrare i risultati di valori aggregati. È tuttavia possibile specificare la clausola HAVING senza la clausola GROUP BY. La clausola HAVING specifica ulteriori filtri che vengono applicati dopo i filtri della clausola WHERE. Questi filtri possono essere applicati a una funzione di aggregazione utilizzata nell'elenco di selezione.

La clausola GROUP BY limita il numero di righe del set di risultati in modo che venga restituita una sola riga per ogni valore distinto delle colonne di raggruppamento. Ogni riga del set di risultati include dati di riepilogo correlati al valore specifico delle relative colonne di raggruppamento.

Quando un'istruzione SELECT include una clausola GROUP BY, nell'elenco di selezione è possibile specificare solo valori specifici, ovvero:
- colonne di raggruppamento;
- espressioni che restituiscono un solo valore per ogni valore delle colonne di raggruppamento, ad esempio funzioni di aggregazione in cui un parametro è impostato su un nome di colonna. Tali funzioni sono denominate funzioni di aggregazione vettoriali.