Lezione sul linguaggio SQL:  per la classe VA liceo tecnico del 11 gennaio 2009   Funzioni aggregate
Funzioni aggregate <ul><li>Le funzioni aggregate operano su di un gruppo di valori e producono dei risultati riepilogativi...
Differenza tra query con e senza aggregati <ul><li>Le query non aggregate elaborano le righe una ad una. </li></ul><ul><ul...
Le principali funzioni aggregate <ul><li>Avg(x) restituisce il valor medio di tutti i valori, non nulli, dell’attributo x ...
Come si usa una funzione aggregata nella SELECT <ul><li>Esaminiamo in dettaglio il formato della istruzione SELECT </li></...
Cosa c’è dentro result-column <ul><li>Vediamo che nel primo percorso c’è un * e non c’è la funzione </li></ul><ul><li>Nel ...
Cosa c’è dentro “expr” <ul><li>nel formato di expr il richiamo della funzione è un function-name nel sesto percorso possib...
Per eseguire una funzione aggregata <ul><li>Per eseguire una funzione aggregata dovremo pertanto fare una query al seguent...
Come si usa la funzione aggregata <ul><li>Calcoliamo ad esempio il numero totale dei voti presenti nella tabella “voto” de...
Il risultato di una funzione aggregata e l’attributo derivato dello schema concettuale <ul><li>Il risultato di una funzion...
Per fare esempi significativi di uso delle funzioni aggregate popoliamo la tabella voti
Quanti voti ha preso ciascun studente <ul><li>Supponiamo di voler conoscere quanti voti ha preso ciascun studente del data...
La clausola GROUP BY <ul><li>La clausola GROUP BY si utilizza per suddividere una tabella in gruppi logici (categorie)  </...
Voto medio per ciascun studente  <ul><li>Per determinare il voto medio di ciascun studente </li></ul><ul><li>1) scegliamo ...
Media dei voti per studente e per materia <ul><li>Se si vuole la media dei voti per ciascun studente per ciascuna materia ...
Creazione di alias di colonne con AS <ul><li>Si può usare la clausola AS per creare un alias di colonna </li></ul><ul><li>...
Se si vuole conoscere quale  è il  voto più grande ? <ul><li>Usiamo la funzione max(voto) </li></ul><ul><li>SELECT max(vot...
Se si vuole conoscere il voto più grande per ogni studente ? <ul><li>In questo caso ci vuole la clausola GROUP BY e raggru...
Se si vuole conoscere il voto più basso per ogni studente ? <ul><li>Se si vuole conoscere il voto più basso per ogni stude...
Se si vuole conoscere il voto più basso di ogni studente per ogni materia ? <ul><li>In questo caso quello che cambia è il ...
Modificare le precedenti query <ul><li>Modificare tutte le precedenti query per mostrare il nome dello studente e il nome ...
Fine della lezione
Upcoming SlideShare
Loading in...5
×

Funzioni Aggregate database

2,277

Published on

funzioni aggregate nel linguaggio sql

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,277
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Funzioni Aggregate database

  1. 1. Lezione sul linguaggio SQL: per la classe VA liceo tecnico del 11 gennaio 2009 Funzioni aggregate
  2. 2. Funzioni aggregate <ul><li>Le funzioni aggregate operano su di un gruppo di valori e producono dei risultati riepilogativi come una somma ad esempio </li></ul><ul><li>Il gruppo di valori può essere costituito da: </li></ul><ul><ul><li>Tutte le righe di una tabella </li></ul></ul><ul><ul><li>Le righe selezionate con la clausola WHERE </li></ul></ul><ul><ul><li>Le righe create con la clausola GROUP BY </li></ul></ul>
  3. 3. Differenza tra query con e senza aggregati <ul><li>Le query non aggregate elaborano le righe una ad una. </li></ul><ul><ul><li>Ciascuna riga è elaborata indipendentemente dalle altre </li></ul></ul><ul><ul><li>e il risultato della query è una selezione opportuna di queste righe e di alcuni loro attributi </li></ul></ul><ul><li>Le query aggregate invece elaborano le righe a gruppi. </li></ul><ul><ul><li>Costruiscono nuove righe a partire da questi gruppi di righe, calcolando anche nuovi attributi non presenti nelle righe di input </li></ul></ul>
  4. 4. Le principali funzioni aggregate <ul><li>Avg(x) restituisce il valor medio di tutti i valori, non nulli, dell’attributo x di un gruppo di righe di input </li></ul><ul><li>Count(x) conta il numero dei valori non nulli di x di un gruppo di righe di input </li></ul><ul><li>Count(*) restituisce il numero di righe del gruppo </li></ul><ul><li>Max(x) restituisce il valore massimo di tutti i valori dell’attributo x del gruppo </li></ul><ul><li>Min(x) restituisce il valore minimo, non nullo,di tutti i valori dell’attributo x del gruppo </li></ul><ul><li>Sum(x) restituisce la somma numerica di tutti i valori dell’attributo x del gruppo </li></ul><ul><li>Group_concat(x) il risultato è una stringa che è la concatenazione di tutti i valori non nulli di x </li></ul>
  5. 5. Come si usa una funzione aggregata nella SELECT <ul><li>Esaminiamo in dettaglio il formato della istruzione SELECT </li></ul><ul><li>La funzione aggregata va inserita all’interno di result-column </li></ul>
  6. 6. Cosa c’è dentro result-column <ul><li>Vediamo che nel primo percorso c’è un * e non c’è la funzione </li></ul><ul><li>Nel secondo percorso c’è il nome di una tabella e non c’è la funzione </li></ul><ul><li>Pertanto il richiamo della funzione deve trovarsi nel terzo percorso: “expr” </li></ul>
  7. 7. Cosa c’è dentro “expr” <ul><li>nel formato di expr il richiamo della funzione è un function-name nel sesto percorso possibile </li></ul>
  8. 8. Per eseguire una funzione aggregata <ul><li>Per eseguire una funzione aggregata dovremo pertanto fare una query al seguente modo: </li></ul><ul><li>SELECT function-name FROM … </li></ul><ul><li>Ossia il nome della funzione si mette dopo il comando SELECT </li></ul>
  9. 9. Come si usa la funzione aggregata <ul><li>Calcoliamo ad esempio il numero totale dei voti presenti nella tabella “voto” del database “registroVoti.db” </li></ul><ul><li>Come dovrà essere fatta la query ? </li></ul><ul><li>1) Scegliamo la funzione aggregata count(x), </li></ul><ul><li>2) scegliamo la x, l’attributo voto della tabella voto </li></ul><ul><li>SELECT count(voto) FROM voto </li></ul>
  10. 10. Il risultato di una funzione aggregata e l’attributo derivato dello schema concettuale <ul><li>Il risultato di una funzione aggregata ci permette di ottenere un attributo derivato dello schema concettuale. </li></ul><ul><li>L’attributo derivato è quello che nello schema concettuale è disegnato con un ovale con contorno tratteggiato </li></ul><ul><li>L’attributo derivato è quel valore che non viene memorizzato nella tabella corrispondente all’entità, perché può e deve essere calcolabile. </li></ul><ul><li>La funzione aggregata permette quindi di calcolare l’attributo derivato </li></ul>
  11. 11. Per fare esempi significativi di uso delle funzioni aggregate popoliamo la tabella voti
  12. 12. Quanti voti ha preso ciascun studente <ul><li>Supponiamo di voler conoscere quanti voti ha preso ciascun studente del database </li></ul><ul><li>Scegliamo la funzione count </li></ul><ul><li>Scegliamo l’attributo x che è la colonna voto </li></ul><ul><li>Scegliamo il gruppo di righe con la clausola GROUP BY </li></ul><ul><li>Scegliamo il criterio di raggruppamento: per studente </li></ul><ul><li>Pertanto la query è fatta così: </li></ul><ul><li>SELECT idStudente,count(voto) from voto GROUP BY idStudente; </li></ul>
  13. 13. La clausola GROUP BY <ul><li>La clausola GROUP BY si utilizza per suddividere una tabella in gruppi logici (categorie) </li></ul><ul><li>E calcolare delle statistiche aggregate per ciascun gruppo </li></ul><ul><li>La clausola GROUP BY si scrive dopo la WHERE e prima di ORDER BY </li></ul>
  14. 14. Voto medio per ciascun studente <ul><li>Per determinare il voto medio di ciascun studente </li></ul><ul><li>1) scegliamo la funzione avg(x) </li></ul><ul><li>2) scegliamo l’attributo x che è voto </li></ul><ul><li>3) raggruppiamo le righe con ORDER BY </li></ul><ul><li>4) scegliamo l’attributo di raggruppamento idStudente </li></ul><ul><li>Ne risulta la seguente query: </li></ul><ul><li>SELECT idStudente,avg(voto) as ‘media dei voti’ FROM voto GROUP BY idStudente; </li></ul>
  15. 15. Media dei voti per studente e per materia <ul><li>Se si vuole la media dei voti per ciascun studente per ciascuna materia ? </li></ul><ul><li>Per risolvere questo problema è sufficiente raggruppare le righe per studente e, nell’ambito di ogni gruppo studente, per materia </li></ul><ul><li>Pertanto la soluzione è immediata: GROUP BY idStudente,idMateria </li></ul>
  16. 16. Creazione di alias di colonne con AS <ul><li>Si può usare la clausola AS per creare un alias di colonna </li></ul><ul><li>Un alias di colonna è un nome alternativo che specifica come controllare le intestazioni mostrate nel risultato di una query. </li></ul><ul><li>È importante usare l’alias quando con le funzioni aggregate si calcola un attributo derivato, che non esiste nella tabella e che necessita di un nome: </li></ul><ul><ul><li>Avg(voto) AS ‘media dei voti’ </li></ul></ul>
  17. 17. Se si vuole conoscere quale è il voto più grande ? <ul><li>Usiamo la funzione max(voto) </li></ul><ul><li>SELECT max(voto) from voto </li></ul>
  18. 18. Se si vuole conoscere il voto più grande per ogni studente ? <ul><li>In questo caso ci vuole la clausola GROUP BY e raggruppare le righe per idStudente </li></ul><ul><li>SELECT idStudente, max(voto) as ‘voto massimo’ FROM voto GROUP BY idStudente; </li></ul>
  19. 19. Se si vuole conoscere il voto più basso per ogni studente ? <ul><li>Se si vuole conoscere il voto più basso per ogni studente, invece di usare la funzione max, usiamo la funzione min(voto) </li></ul><ul><li>Come prima raggruppiamo le righe per studente con la clausola GROUP BY idStudente </li></ul><ul><li>SELECT idStudente, min(voto) FROM voto GROUP BY idStudente; </li></ul>
  20. 20. Se si vuole conoscere il voto più basso di ogni studente per ogni materia ? <ul><li>In questo caso quello che cambia è il raggruppamento delle righe. </li></ul><ul><li>Oltre che raggrupparle per studente, dobbiamo raggrupparle per materia. </li></ul><ul><li>SELECT idStudente, idMateria, min(voto) FROM voto GROUP BY idStudente,idMateria; </li></ul>
  21. 21. Modificare le precedenti query <ul><li>Modificare tutte le precedenti query per mostrare il nome dello studente e il nome della materia, invece che i rispettivi codici. </li></ul><ul><li>Che cosa bisogna fare ? </li></ul><ul><li>eseguire tutte le precedenti query, poi modificarle per raggiungere l’obiettivo di cui sopra </li></ul><ul><li>Pubblicate nei vostri blog, le query con i risultati. </li></ul>
  22. 22. Fine della lezione
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×