Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C

Slides:



Advertisements
Presentazioni simili
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Advertisements

SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 24/09/2002.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rileaborato da M. Lenzerini - Basi di dati
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Le operazioni relazionali (continua)
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
A. A – 2008 Basi di dati 1 Corso Prof
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Corso di Basi di Dati Il Linguaggio SQL
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Il modello relazionale
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
SQL, Definizione e interrogazione di basi di dati
Interrogazioni Nidificate
SQL per la modifica di basi di dati
Il modello relazionale
Operatori aggregati e raggruppamenti
Quantificazione Esistenziale ed Universale
Selezione e Proiezione
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere.
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C. Batini 7. SQL DML 7.7 Operatore di Raggruppamento

Raggruppamenti: l’ operatore GROUP BY adattato da Atzeni-etal., Basi di dati, McGrawHill

Limiti degli operatori aggregati Fino a questo momento le funzioni di aggregazione (COUNT, ecc.) si applicano all’ intero risultato della interrogazione. Le funzioni di aggregazione possono essere applicate anche a partizioni delle relazioni, cioe’ a gruppi di tuple. adattato da Atzeni-etal., Basi di dati, McGrawHill

Operatori aggregati e raggruppamenti Le funzioni di aggregazione possono essere applicate a partizioni delle relazioni, cioe’ a gruppi di tuple. Si usa in questo caso l’operatore GROUP BY, con sintassi: GROUP BY listaAttributi che viene inserito alla fine della SELECT SELECT target list FROM … WHERE … adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Semantica delle interrogazioni con operatori aggregati e raggruppamenti 1. Esegui la interrogazione senza tener conto la GROUP BY e gli operatori aggregati 2. Raggruppa le righe che hanno stessi valori per gli attributi che compaiono nella listaAttributi della GROUP BY 3. Applica l’operatore aggregato a ciascun gruppo di n-ple adattato da Atzeni-etal., Basi di dati, McGrawHill

Esempio utilizzato nel seguito Sia data la relazione Paternita’ (Padre, Figlio, Reddito) dove Reddito e’ il reddito del figlio adattato da Atzeni-etal., Basi di dati, McGrawHill

Operatori aggregati e raggruppamenti Trovare il numero di figli di ciascun padre che hanno reddito maggiore di 25 select Padre, count(*) AS NumFigli from Paternita where Reddito > 25 group by Padre Padre Figlio Reddito Sergio Franco 50 Luigi Olga 30 Luigi Filippo 20 Franco Andrea 40 Franco Aldo 40 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esegui la interrogazione “in giallo” senza GROUP BY e senza operatori aggregati 1. select Padre, count(*) AS NumFigli from Paternita Where Reddito > 25 group by Padre Domanda 7.7.1 Quale e’ il risultato? Padre Figlio Reddito Luigi Sergio Olga 30 Franco Andrea 40 Aldo 40 Franco 50 Padre Figlio Reddito Sergio Franco 50 Luigi Olga 30 Luigi Filippo 20 Franco Andrea 40 Franco Aldo 40 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill 2. Raggruppa le righe che hanno stessi valori per gli attributi nella GROUP BY select Padre, count(*) AS NumFigli from Paternita Where Reddito > 25 2. group by Padre Domanda 7.7.2 Quale e’ il risultato? Franco Andrea Aldo Luigi Olga Padre Figlio Sergio Padre Figlio Reddito Sergio Franco 50 Luigi Olga 30 Franco Andrea 40 Franco Aldo 40 adattato da Atzeni-etal., Basi di dati, McGrawHill

3. Applica l’operatore aggregato a ciascun gruppo select Padre, 3. count(*) AS NumFigli from Paternita Where Reddito > 25 group by Padre Domanda 7.7.3 Quale e’ il risultato? Franco Andrea Aldo Luigi Olga Padre Figlio Sergio Padre NumFigli Luigi Sergio 1 Franco 2 adattato da Atzeni-etal., Basi di dati, McGrawHill

Regola da rispettare nella clausola GROUP BY In una interrogazione che fa uso della GROUP BY puo’ comparire come argomento della SELECT, e quindi come insieme di attributi nella target list, solamente un sottoinsieme degli attributi che compaiono nella clausola GROUP BY SELECT target list FROM … WHERE … GROUP BY insieme di attributi di aggregazione Vediamo perche’ adattato da Atzeni-etal., Basi di dati, McGrawHill

Operatori aggregati e raggruppamenti Esempio 1 select Padre, count(*) AS NumFigli from Paternita Where Reddito > 50 group by Padre Domanda 7.7.4 Esprimi in linguaggio naturale cosa calcola questa interrogazione. Risposta Trova il numero di figli di ciascun padre con reddito maggiore di 50 Va bene adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esempio 2 Consideriamo questa relazione e sua istanza Esaminala con attenzione Cognome Dipartimento Ufficio Rossi Amministrazione 10 Verdi Produzione 20 Neri Direzione 30 Gini 15 Dini 25 Peri 40 Turi 50 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esempio 2 Nello schema Impiegato (Cognome, Dipartimento, Ufficio) L’interrogazione Select Dipartimento, Ufficio, Count (Ufficio) From Impiegato Group by Dipartimento Non e’ corretta (e, nota, non rispetta la regola!) Infatti applicando la group by e poi la select si ottiene … adattato da Atzeni-etal., Basi di dati, McGrawHill

Situazione di partenza Select Dipartimento, Ufficio, Count (Ufficio) From Impiegato Group by Dipartimento Situazione di partenza Cognome Dipartimento Ufficio Rossi Amministrazione 10 Verdi Produzione 20 Neri Direzione 30 Gini 15 Dini 25 Peri 40 Turi 50 adattato da Atzeni-etal., Basi di dati, McGrawHill

Raggruppamenti generati - 1 Select Dipartimento, Ufficio, Count (Ufficio) From Impiegato Group by Dipartimento Raggruppamenti generati - 1 Cognome Dipartimento Ufficio Rossi Amministrazione 10 Verdi Produzione 20 Neri Direzione 30 Gini 15 Dini 25 Peri 40 Turi 50 adattato da Atzeni-etal., Basi di dati, McGrawHill

Raggruppamenti generati - 2 Select Dipartimento, Ufficio, Count (Ufficio) From Impiegato Group by Dipartimento Raggruppamenti generati - 2 Cognome Dipartimento Ufficio Rossi Amministrazione 10 Gini 15 Dini 25 Verdi Produzione 20 Peri 40 Neri Direzione 30 Turi 50 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Risultato finale Dipartimento Ufficio Numero uffici Amministrazione 10 15 25 3 Produzione 20 40 2 Direzione 30 50 Che non e’ coerente con la definizione di istanza nel modello relazionale, in cui nelle n-ple non possono comparire multivalori adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Altro esempio - 3 Se lo scopo della interrogazione era trovare per ogni dipartimento il numero di uffici, va bene invece l’interrogazione Select Dipartimento, count (Ufficio) From Impiegato Group by Dipartimento adattato da Atzeni-etal., Basi di dati, McGrawHill

La restrizione e’ eccessiva … Consideriamo la interrogazione Select Dipartimento, count (*), Citta’ From Impiegato Join Dipartimento on (Dipartimento = Nome) Group by Dipartimento Eseguita sullo schema Dipartimento (Nome, Citta’) Impiegato (Cognome, Dipartimento) Restituirebbe, poiche’ c’e’ una sola citta’ per dipartimento, i dipartimenti, il numero di impiegati dei dipartimenti, e la citta’ del dipartimento. adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Ma …. Non e’ accettata perche’ la implementazione sarebbe piu’ complessa, dovendo il compilatore verificare quali sono gli attributi ammissibili D’altra parte, si puo’ sempre esprimere con un insieme di attributi ridondante Select Dipartimento, count (*), Citta’ From Impiegato Join Dipartimento on (Dipartimento = Nome) Group by Dipartimento, Citta’ adattato da Atzeni-etal., Basi di dati, McGrawHill

Raggruppamenti e target list: altro esempio scorretta select Padre, avg(f.reddito), P.reddito from Persone f Join Paternita on Figlio = Nome Join Persone p on Padre =P.Nome group by Padre corretta select Padre, avg(f.Reddito), P.reddito from Persone f Join Paternita on Figlio = Nome Join Persone p on Padre =P.Nome group by Padre, P.Reddito adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Concetti introdotti Operatore GROUP BY di raggruppamento adattato da Atzeni-etal., Basi di dati, McGrawHill