Home / SQL Server 2016 / #3 T-SQL: La clausola GROUP BY

#3 T-SQL: La clausola GROUP BY

GROUP BY

Come già intravisto nel primo articolo di questa serie, la clausola GROUP BY consente di raggruppare le righe restituite dalle precedenti clausole di una query.

Poniamo di avere all’interno del nostro database la tabella Scuola con il seguente contenuto:

Partiamo da questa query di esempio:

SELECT   AnnoNascita,  LuogoNascita,  COUNT(*) as NumeroStudenti

FROM   [DBTUT ITA].[Scuola].[Studenti]

GROUP BY   AnnoNascita, LuogoNascita

Nel nostro esempio, la clausola GROUP BY creerà un gruppo per ogni combinazione univoca di AnnoNascita e LuogoNascita. Vediamo il risultato della query.

Cosa ci racconta il risultato della nostra query? Ci dice – ad esempio – che gli studenti nati nel 1981 a Roma sono 2, mentre nello stesso anno uno degli studenti è nato a New York.

Fate attenzione! Se nella query è presente il GROUP BY, tutte le clausole che vengono eseguite dopo questa clausola (HAVING, SELECT, ORDER BY) devono operare sui gruppi e non sulle singole righe. Questo cosa significa? Ogni raggruppamento rappresenterà una riga nel risultato della query e quindi le clausole eseguite dopo la GROUP BY devono produrre un valore scalare singolo per ogni gruppo.

Inoltre, gli elementi che non sono riportati nella GROUP BY non sono consentiti. Ad esempio, non potrò inserire nella SELECT la colonna StudentiId in quanto non fa parte del raggrupamento. Sono consentiti solo elementi di Input quali: COUNT, SUM, AVG, MIN e MAX

Spero che questo mini tutorial vi sia stato d’aiuto. Se avete dubbi o domande lasciateci un commento qui sotto e vi risponderemo il prima possibile!
Buona domenica a tutti!

About Lara

Mi chiamo Lara (perché mia mamma guardava il film de Il dottor Živago), ho 35 anni e sono nata e cresciuta nell'entroterra marchigiano. Amo la mia terra, che è un pezzo del mio cuore. Gli altri pezzi sono a Madrid, Parigi (dove ho vissuto 3 anni per lavoro) e a Milano. Curiosità, passione, creatività, pragmaticità e problem solving mi contraddistinguono (i difetti non li scrivo mica pubblicamente!!!). Fotografia, tecnologia, arte, film, gialli, cibo ... e molto altro! Sono Co-founder di Geekotech.it e Geekotech.fr

Check Also

SQL Server 2016 : Come impostare invio mail in caso di fallimento del Job? (SSMS)

Ciao a tutti!! Oggi inauguriamo una nuova sezione del sito che si occuperà di SQL …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *