Allinterno del comando SELECT si possono usare alcune funzioni predefinite dette funzioni di aggregazione. Vediamo quali sono e come possono essere utilizzate. Le tabelle seguenti saranno utilizzate per gli esempi.
IMPIEGATO
stipendio 60 40 40 40 50 70
dipartimento No No No Su Su Is
codice No Su Is
PROGETTO
bilancio 50 30 18
Funzione COUNT
La funzione COUNT conta il numero di righe presenti in una tabella. La funzione ha un unico argomento che pu assumere come valore * (asterisco) o un attributo della tabella. SELECT FROM COUNT (*) tabella
Restituisce il numero di righe della tabella, comprese quelle con campi contenenti valori NULL. SELECT FROM COUNT (attributo) tabella
Restituisce il numero di righe della tabella, escluse quelle che nella colonna dellattributo contengono valori NULL. Se si specifica anche una condizione, il conteggio limitato alle sole righe che la soddisfano. SELECT FROM WHERE COUNT (attributo) tabella condizione
Possiamo utilizzare AS per ridenominare la colonna. AS pu essere utilizzato per tutte le funzioni di aggregazione. SELECT FROM Resultset:
numeroImpiegati 6
Esempio 2: Contare il numero di impiegati con stipendio inferiore a 50 SELECT FROM WHERE Resultset:
COUNT(*) 3
La clausola DISTINCT pu essere utilizzata con tutte le funzioni di aggregazione. Funzione SUM
SUM restituisce la somma di tutti i valori (numerici) contenuti nella colonna passata come argomento. I campi contenenti valori NULL sono considerati come aventi valore 0. SELECT FROM SELECT FROM WHERE SUM (attributo) tabella SUM (attributo) tabella condizione
Se viene specificata una condizione con la clausola WHERE, la somma calcolata solo per le righe che la soddisfano. Largomento della funzione SUM pu anche essere unespressione numerica contenente attributi di tipo numerico. Esempio 1: Calcolare la somma dei bilanci di progetto SELECT FROM SUM (bilancio) progetto
Resultset:
SUM(bilancio) 98
Esempio 2: Calcolare la somma dei bilanci di tutti i progetti, ad eccezione del progetto Alpha SELECT FROM WHERE Resultset:
SUM(bilancio) 48
Esempio 3: Calcolare la somma del 50% dei bilanci di progetto SELECT FROM Resultset:
SUM(bilancio*50/100) 49
Funzione AVG
AVG (dallinglese average) restituisce la media aritmetica di tutti i valori (numerici) contenuti nella colonna passata come argomento. I campi contenenti valori NULL non sono considerati nel calcolo. Largomento della funzione AVG pu essere unespressione numerica contenente attributi di tipo numerico. SELECT FROM SELECT FROM WHERE AVG (attributo) tabella AVG (attributo) tabella condizione
Se viene specificata una condizione con la clausola WHERE, la media calcolata solo per le righe che la soddisfano.
Esempio 1: Calcolare la media degli stipendi degli impiegati SELECT FROM Resultset:
AVG(stipendio) 50
MIN e MAX restituiscono rispettivamente il valore minimo e il valore massimo tra i valori della colonna di una tabella passata come argomento. Largomento pu essere unespressione. Nel caso sia specificata la clausola WHERE vengono considerate solo le righe che soddisfano la condizione. Le due funzioni sono applicabili tanto a valori numerici quanto a valori letterali (lordinamento quello alfabetico). Analogamente a SUM e a AVG i campi con valore NULL sono ignorati. SELECT FROM SELECT FROM WHERE MIN (attributo) tabella MIN (attributo) tabella condizione
Idem per MAX. Esempio 1: Determinare gli stipendi minimo e massimo degli impiegati SELECT FROM Resultset:
stipMinimo 40 stipMassimo 70
Esempio 2: Determinare il primo cognome, in ordine alfabetico, degli impiegati SELECT FROM MIN (cogn) impiegato
Resultset:
MIN(cognome) Bisi
Le funzioni di aggregazione possono essere utilizzate in una espressione ma non possono essere nidificate. Per esempio, corretto scrivere: AVG(attributo) *10 mentre non consentito scrivere: AVG(SUM(attributo))
Ordinamenti
Nel comando SELECT si pu inserire la clausola ORDER BY per ordinare i risultati di una interrogazione. Lordinamento pu essere crescente (ASC) o decrescente (DESC). Per default lordinamento crescente e di conseguenza non necessario specificarlo utilizzando la parola chiave ASC. Lordinamento viene fatto su uno o pi attributi tra quelli specificati accanto alla parola SELECT (gli attributi su cui si fa una proiezione). La clausola ORDER BY lultimo elemento di un comando SQL. SELECT FROM WHERE ORDER BY lista attributi tabella condizione lista attributi
Esempio 1: Determinare i cognomi degli impiegati in ordine alfabetico crescente SELECT FROM ORDER BY Resultset:
cogn Bisi Neri Rossi Sili Verdi
Bocchi Cinzia Ultimo aggiornamento: 05/12/2012
Esempio 2: Determinare i cognomi degli impiegati in ordine alfabetico decrescente SELECT FROM ORDER BY Resultset:
cogn Verdi Sili Rossi Neri Bisi
Esempio 3: Determinare i nomi e le sedi dei dipartimenti in ordine alfabetico crescente SELECT FROM ORDER BY nome, sede dipartimento nome, sede
In questo caso lordinamento viene effettuato sul primo campo specificato nella clausola ORDER BY; a parit di nome si procede con lordinamento sul secondo campo e cos via. Resultset:
nome Nord Isole Sud sede Milano Palermo Napoli
Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
Bocchi Cinzia Ultimo aggiornamento: 05/12/2012