SQL_m8 Funzioni Di Aggregazione e Ordinamenti
-
Upload
cinzia-bocchi -
Category
Documents
-
view
219 -
download
0
Transcript of SQL_m8 Funzioni Di Aggregazione e Ordinamenti
-
7/30/2019 SQL_m8 Funzioni Di Aggregazione e Ordinamenti
1/7
Funzioni di aggregazione e ordinamenti
Funzioni di aggregazione
Allinterno del comando SELECT si possono usare alcune funzioni predefinite dettefunzioni di aggregazione. Vediamo quali sono e come possono essere utilizzate. Le tabelleseguenti saranno utilizzate per gli esempi.
IMPIEGATO
matr cogn stipendio dipartimento
101 Sili 60 No
102 Rossi 40 No
103 Neri 40 No
201 Neri 40 Su
202 Verdi 50 Su
301 Bisi 70 Is
DIPARTIMENTO
codice nome sede direttore
No Nord Milano 101
Su Sud Napoli 201
Is Isole Palermo 301
PROGETTO
sigla nome bilancio responsabile
Alpha Vendite 50 202
Beta Inventario 30 301
Gamma Distribuzione 18 301
PARTECIPAZIONE
impiegato progetto
101 Alpha
101 Beta
103 Alpha
103 Beta
201 Beta
202 Beta
Bocchi CinziaUltimo aggiornamento: 05/12/2012
1
-
7/30/2019 SQL_m8 Funzioni Di Aggregazione e Ordinamenti
2/7
Funzione COUNT
La funzione COUNT conta il numero di righe presenti in una tabella. La funzione ha ununico argomento che pu assumere come valore * (asterisco) o un attributo della tabella.
SELECT COUNT (*)FROM tabella
Restituisce il numero di righe della tabella, comprese quelle con campi contenenti valoriNULL.
SELECT COUNT (attributo)FROM tabella
Restituisce il numero di righe della tabella, escluse quelle che nella colonna dellattributocontengono valori NULL. Se si specifica anche una condizione, il conteggio limitato alle
sole righe che la soddisfano.
SELECT COUNT (attributo)FROM tabellaWHERE condizione
Esempio 1: Contare il numero di impiegati
SELECT COUNT (*)
FROM impiegato
Resultset:
COUNT(*)
6
Possiamo utilizzare AS per ridenominare la colonna. AS pu essere utilizzato per tutte lefunzioni di aggregazione.
SELECT COUNT (*) AS numeroImpiegatiFROM impiegato
Resultset:
numeroImpiegati
6
Bocchi CinziaUltimo aggiornamento: 05/12/2012
2
-
7/30/2019 SQL_m8 Funzioni Di Aggregazione e Ordinamenti
3/7
Esempio 2: Contare il numero di impiegati con stipendio inferiore a 50
SELECT COUNT (*)FROM impiegatoWHERE stipendio < 50
Resultset:
COUNT(*)
3
Esempio 3: Contare i cognomi distiniti degli impiegati
SELECT COUNT (DISTINCT cogn)
FROM impiegato
Resultset:
COUNT(*)
5
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 comeargomento. I campi contenenti valori NULL sono considerati come aventi valore 0.
SELECT SUM (attributo)FROM tabella
SELECT SUM (attributo)FROM tabella
WHERE condizione
Se viene specificata una condizione con la clausola WHERE, la somma calcolata soloper le righe che la soddisfano. Largomento della funzione SUM pu anche essereunespressione numerica contenente attributi di tipo numerico.
Esempio 1: Calcolare la somma dei bilanci di progetto
SELECT SUM (bilancio)FROM progetto
Bocchi CinziaUltimo aggiornamento: 05/12/2012
3
-
7/30/2019 SQL_m8 Funzioni Di Aggregazione e Ordinamenti
4/7
Resultset:
SUM(bilancio)
98
Esempio 2: Calcolare la somma dei bilanci di tutti i progetti, ad eccezione delprogetto Alpha
SELECT SUM (bilancio)FROM progettoWHERE sigla Alpha
Resultset:
SUM(bilancio)
48
Esempio 3: Calcolare la somma del 50% dei bilanci di progetto
SELECT SUM (bilancio*50/100)FROM progetto
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 unespressionenumerica contenente attributi di tipo numerico.
SELECT AVG (attributo)FROM tabella
SELECT AVG (attributo)FROM tabellaWHERE condizione
Se viene specificata una condizione con la clausola WHERE, la media calcolata solo per
le righe che la soddisfano.
Bocchi CinziaUltimo aggiornamento: 05/12/2012
4
-
7/30/2019 SQL_m8 Funzioni Di Aggregazione e Ordinamenti
5/7
Esempio 1: Calcolare la media degli stipendi degli impiegati
SELECT AVG (stipendio)FROM impiegato
Resultset:
AVG(stipendio)
50
Funzioni MIN e MAX
MIN e MAX restituiscono rispettivamente il valore minimo e il valore massimo tra i valoridella colonna di una tabella passata come argomento. Largomento pu essere
unespressione. Nel caso sia specificata la clausola WHERE vengono considerate solo lerighe che soddisfano la condizione. Le due funzioni sono applicabili tanto a valori numericiquanto a valori letterali (lordinamento quello alfabetico). Analogamente a SUM e a AVGi campi con valore NULL sono ignorati.
SELECT MIN (attributo)FROM tabella
SELECT MIN (attributo)FROM tabellaWHERE condizione
Idem per MAX.
Esempio 1: Determinare gli stipendi minimo e massimo degli impiegati
SELECT MIN (stipendio) AS stipMinimo, MAX (stipendio) AS stipMassimoFROM impiegato
Resultset:
stipMinimo stipMassimo40 70
Esempio 2: Determinare il primo cognome, in ordine alfabetico, degli impiegati
SELECT MIN (cogn)FROM impiegato
Bocchi CinziaUltimo aggiornamento: 05/12/2012
5
-
7/30/2019 SQL_m8 Funzioni Di Aggregazione e Ordinamenti
6/7
Resultset:
MIN(cognome)
Bisi
Osservazione sulle funzioni di aggregazione
Le funzioni di aggregazione possono essere utilizzate in una espressione ma non possonoessere 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 unainterrogazione. Lordinamento pu essere crescente (ASC) o decrescente (DESC). Perdefault lordinamento crescente e di conseguenza non necessario specificarloutilizzando la parola chiave ASC. Lordinamento viene fatto su uno o pi attributi tra quellispecificati accanto alla parola SELECT (gli attributi su cui si fa una proiezione).
La clausola ORDER BY lultimo elemento di un comando SQL.
SELECT listaattributiFROM tabellaWHERE condizioneORDER BY lista attributi
Esempio 1: Determinare i cognomi degli impiegati in ordine alfabetico crescente
SELECT DISTINCT cogn
FROM impiegatoORDER BY cogn
Resultset:
cogn
Bisi
Neri
Rossi
Sili
Verdi
Bocchi CinziaUltimo aggiornamento: 05/12/2012
6
-
7/30/2019 SQL_m8 Funzioni Di Aggregazione e Ordinamenti
7/7
Esempio 2: Determinare i cognomi degli impiegati in ordine alfabetico decrescente
SELECT DISTINCT cognFROM impiegato
ORDER BY cogn DESC;
Resultset:
cogn
Verdi
Sili
Rossi
Neri
Bisi
Esempio 3: Determinare i nomi e le sedi dei dipartimenti in ordine alfabeticocrescente
SELECT nome, sedeFROM dipartimentoORDER BY nome, sede
In questo caso lordinamento viene effettuato sul primo campo specificato nella clausolaORDER BY; a parit di nome si procede con lordinamento sul secondo campo e cos via.
Resultset:
nome sede
Nord Milano
Isole Palermo
Sud Napoli
Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Perleggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisciuna lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
Bocchi CinziaUltimo aggiornamento: 05/12/2012
7