SQL_m8 Funzioni Di Aggregazione e Ordinamenti

download SQL_m8 Funzioni Di Aggregazione e Ordinamenti

of 7

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