Sei sulla pagina 1di 7

Funzioni di aggregazione e ordinamenti Funzioni di aggregazione

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

matr 101 102 103 201 202 301


DIPARTIMENTO

cogn Sili Rossi Neri Neri Verdi Bisi

stipendio 60 40 40 40 50 70

dipartimento No No No Su Su Is

codice No Su Is
PROGETTO

nome Nord Sud Isole

sede Milano Napoli Palermo

direttore 101 201 301

sigla Alpha Beta Gamma


PARTECIPAZIONE

nome Vendite Inventario Distribuzione

bilancio 50 30 18

responsabile 202 301 301

impiegato 101 101 103 103 201 202

progetto Alpha Beta Alpha Beta Beta Beta

Bocchi Cinzia Ultimo aggiornamento: 05/12/2012

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

Esempio 1: Contare il numero di impiegati SELECT FROM Resultset:


COUNT(*) 6

COUNT (*) impiegato

Possiamo utilizzare AS per ridenominare la colonna. AS pu essere utilizzato per tutte le funzioni di aggregazione. SELECT FROM Resultset:
numeroImpiegati 6

COUNT (*) AS numeroImpiegati impiegato

Bocchi Cinzia Ultimo aggiornamento: 05/12/2012

Esempio 2: Contare il numero di impiegati con stipendio inferiore a 50 SELECT FROM WHERE Resultset:
COUNT(*) 3

COUNT (*) impiegato stipendio < 50

Esempio 3: Contare i cognomi distiniti degli impiegati SELECT FROM Resultset:


COUNT(*) 5

COUNT (DISTINCT cogn) impiegato

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

Bocchi Cinzia Ultimo aggiornamento: 05/12/2012

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

SUM (bilancio) progetto sigla <> Alpha

Esempio 3: Calcolare la somma del 50% dei bilanci di progetto SELECT FROM Resultset:
SUM(bilancio*50/100) 49

SUM (bilancio*50/100) progetto

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.

Bocchi Cinzia Ultimo aggiornamento: 05/12/2012

Esempio 1: Calcolare la media degli stipendi degli impiegati SELECT FROM Resultset:
AVG(stipendio) 50

AVG (stipendio) impiegato

Funzioni MIN e MAX

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

MIN (stipendio) AS stipMinimo, MAX (stipendio) AS stipMassimo impiegato

Esempio 2: Determinare il primo cognome, in ordine alfabetico, degli impiegati SELECT FROM MIN (cogn) impiegato

Bocchi Cinzia Ultimo aggiornamento: 05/12/2012

Resultset:
MIN(cognome) Bisi

Osservazione sulle funzioni di aggregazione

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

DISTINCT cogn impiegato cogn

Esempio 2: Determinare i cognomi degli impiegati in ordine alfabetico decrescente SELECT FROM ORDER BY Resultset:
cogn Verdi Sili Rossi Neri Bisi

DISTINCT cogn impiegato cogn DESC;

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