📁
Forum per Webmaster
SQL

Funzioni di aggregazione

All'interno del comando Select possono essere usate funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della tabella e che per questo motivo si chiamano funzioni di aggregazione.

Funzione COUNT

La funzione COUNT conta il numero di righe presenti in una tabella. La sintassi del linguaggio SQL richiede di specificare come argomento della funzione il nome di un attributo oppure il carattere * (asterisco): nel primo caso non vengono conteggiate le righe che hanno valore Null nella colonna dell'attributo specificato; nel secondo caso, indicando l'asterisco, la funzione Count(*) calcola il numero delle righe della tabella, incluse quelle con campi di tipo Null. In sostanza la funzione Count(*) serve per ottenere la cardinalità di una relazione. La funzione calcola solo il numero delle righe, indipendentemente dai valori in esse memorizzati.
Il seguente comando restituisce il numero di tutte le righe presenti nella tabella Personale:

SELECT COUNT (*)
 FROM Personale

Specificando il nome dell'attributo Livello come argomento della funzione Count, si ottiene il numero dei dipendenti per i quali è specificato il livello nella tabella Personale:

SELECT COUNT (Livello)
 FROM Personale ;

Se utilizzata in un comando Select che contiene il controllo di una condizione scritta dopo where, la funzione Count restituisce il numero delle righe che soddisfano alla condizione specificata.
La seguente interrogazione restituisce il numero dei dipendenti della provincia di Milano presenti nella tabella Personale:

SELECT COUNT(*)
 FROM Personale
 WHERE Prov 'MI';

La stessa funzione nella versione COUNT(DISTINCT x) consente di ottenere il numero dei valori diversi tra loro nella colonna x che soddisfano alla condizione scritta dopo where. Per esempio se si vuole conoscere a quanti livelli diversi appartengono i dipendenti che abitano in provincia di Milano, occorre dare il comando:

SELECT COUNT(DISTINCT livello)
 FROM Personale
 WHERE Prov 'MI';

La clausola Distinct non può essere usata nel formato con l'asterisco Count(*).
Il risultato del conteggio può essere anche descritto con un’opportuna intestazione, come già visto in precedenza, aggiungendo la clausola As seguita dalla stringa da assegnare:

SELECT COUNT(DISTINCT livello) AS Livelli
 FROM Personale
 WHERE Prov 'MI';

Funzione SUM

La funzione SUM restituisce la somma di tutti i valori contenuti in una colonna specificata come argomento della funzione: naturalmente l'attributo utilizzato nel calcolo deve essere di tipo numerico.
La funzione Sum considera i record contenenti campi di tipo Null come aventi valore O. Se nel comando Select è presente il controllo di una condizione con where, la funzione calcola la somma dei valori contenuti in una colonna solo per le righe che soddisfano alla condizione specificata dopo la clausola Where.
Per esempio se si vuole ottenere la somma degli stipendi base dei dipendenti che appartengono al livello 5, occorre usare il comando Select nella forma:

SELECT SUM (StipBase)
 FROM Personale
 WHERE Livello 5 ;

Anche con questa funzione si può usare, se necessario, la parola Distinct prima del nome dell'attributo, se si vogliono eliminare dal calcolo della somma i valori duplicati presenti nella colonna specificata.
L'argomento della funzione Sum può anche essere un’espressione numerica contenente i nomi di attributi di tipo numerico. Si supponga per esempio di avere una tabella delle fatture che contiene tra gli attributi, per ciascuna fattura, il prezzo unitario dei prodotti e la quantità ordinata. Il totale delle fatture viene calcolato con il seguente comando Select:

SELECT SUM (PrezUnit * Qta) AS Totale
 FROM Fatture ;

Funzione AVG

In modo analogo agisce la funzione AVG (dall'inglese Average media), per calcolare la media dei valori (numerici) contenuti in una determinata colonna di una tabella, con l'eventuale aggiunta dell'opzione Distinct. Largomento della funzione può essere un’espressione aritmetica anziché il nome di un attributo. La media calcolata dalla funzione Avg equivale alla media aritmetica, cioè la somma dei valori diviso il numero dei valori. La funzione Avg non include nel calcolo i valori di tipo Null presenti nella colonna.
Nell'esempio seguente viene calcolato lo stipendio medio dei dipendenti che svolgono la funzione di impiegati:

SELECT AVG(StipBase)
 FROM Personale
 WHERE Funzione 'Impiegato';

Funzione MIN e MAX

Le funzioni MIN e MAX restituiscono rispettivamente il valore minimo e il valore massimo tra i valori della colonna di una tabella specificata come argomento della funzione; nel caso sia specificata la clausola Where calcolano il valore minimo e massimo dei valori di una colonna considerando solo le righe che soddisfano alla condizione. Le funzioni Min e Max consentono di determinare i valori minimi e massimi anche per campi di tipo carattere. Per esempio utilizzando un attributo numerico come lo stipendio base si calcolano i valori minimo e massimo degli stipendi di tutti i dipendenti:

SELECT MIN(StipBase), MAX(StipBase)
 FROM Personale;

Il seguente esempio di interrogazione invece restituisce il primo cognome e l'ultimo nell'elenco dei dipendenti, specificando come argomento delle funzioni l'attributo Cognome che è di tipo carattere:

SELECT MIN(Cognome), MAX(Cognome)
FRON Personale;

Anche le funzioni Min e Max ignorano i campi con valore Null e possono avere come argomento un'espressione anziché il nome di un attributo.

Argomenti nella stessa categoria