# Informatica 3 Liceo Scientifico Scienze Applicate/SubQuery e Group By

Informatica 3 Liceo Scientifico Scienze Applicate
Copertina Tutti i moduli · Sviluppo
    CopertinaInformatica 3 Liceo Scientifico Scienze Applicate/Copertina
* I DataBaseInformatica 3 Liceo Scientifico Scienze Applicate/I DataBase
* Modelli di DatabaseInformatica 3 Liceo Scientifico Scienze Applicate/Modelli di Database
* Progettare un database relazionaleInformatica 3 Liceo Scientifico Scienze Applicate/Progettare un database relazionale
* Modello ERInformatica 3 Liceo Scientifico Scienze Applicate/Modello ER
* Modello RelazionaleInformatica 3 Liceo Scientifico Scienze Applicate/Modello Relazionale
** Es Concessionaria MotoInformatica 3 Liceo Scientifico Scienze Applicate/Es Concessionaria Moto
** Es Agenzia ImmobiliareInformatica 3 Liceo Scientifico Scienze Applicate/Es Agenzia Immobiliare
** Es Mercato del Pesce
** Es1 PrenotazioneVaporettoInformatica 3 Liceo Scientifico Scienze Applicate/Es1 PrenotazioneVaporetto
** Es2 InterrogazioniPianificateInformatica 3 Liceo Scientifico Scienze Applicate/Es2 InterrogazioniPianificate
** Es2 TaglioFashionInformatica 3 Liceo Scientifico Scienze Applicate/Es2 TaglioFashion
* Forme Normali Integrità ReferenzialeInformatica 3 Liceo Scientifico Scienze Applicate/Forme Normali Integrità Referenziale
* Linguaggio SQLInformatica 3 Liceo Scientifico Scienze Applicate/Linguaggio SQL
** Query tramite SELECTInformatica 3 Liceo Scientifico Scienze Applicate/Query tramite SELECT
** SubQuery e Group ByInformatica 3 Liceo Scientifico Scienze Applicate/SubQuery e Group By
** Comandi SQL per creare tabelleInformatica 3 Liceo Scientifico Scienze Applicate/Comandi SQL per creare tabelle
** Comandi SQL per inserire datiInformatica 3 Liceo Scientifico Scienze Applicate/Comandi SQL per inserire dati
* Compito1Informatica 3 Liceo Scientifico Scienze Applicate/Compito1
* Compito2Informatica 3 Liceo Scientifico Scienze Applicate/Compito2
* Compito3
* HTMLInformatica 3 Liceo Scientifico Scienze Applicate/HTML
** HTML tag
** HTML formInformatica 3 Liceo Scientifico Scienze Applicate/HTML form
* Mysql e EasyPhpInformatica 3 Liceo Scientifico Scienze Applicate/Mysql e EasyPhp
* MySQL WorkbenchInformatica 3 Liceo Scientifico Scienze Applicate/MySQL Workbench
* PHPInformatica 3 Liceo Scientifico Scienze Applicate/PHP
* PHP tabellaInformatica 3 Liceo Scientifico Scienze Applicate/PHP tabella
* PHP Es. ProgettiInformatica 3 Liceo Scientifico Scienze Applicate/PHP Es. Progetti
** Spiegazione Uso FormsInformatica 3 Liceo Scientifico Scienze Applicate/Spiegazione Uso Forms
** Spiegazione Uso Mysql
** Programmi UtilizzatiInformatica 3 Liceo Scientifico Scienze Applicate/Programmi Utilizzati
** Schema CollegamentiInformatica 3 Liceo Scientifico Scienze Applicate/Schema Collegamenti
** Database ImpiegatoInformatica 3 Liceo Scientifico Scienze Applicate/Database Impiegato
** Modulo CapoProgettoInformatica 3 Liceo Scientifico Scienze Applicate/Modulo CapoProgetto
** Modulo CredenzialiInformatica 3 Liceo Scientifico Scienze Applicate/Modulo Credenziali
** Modulo ProgettiInformatica 3 Liceo Scientifico Scienze Applicate/Modulo Progetti
** Modulo Visualizza ProgettiInformatica 3 Liceo Scientifico Scienze Applicate/Modulo Visualizza Progetti
** CSS pag1 ProgettoInformatica 3 Liceo Scientifico Scienze Applicate/CSS pag1 Progetto
** CSS pag2 ProgettoInformatica 3 Liceo Scientifico Scienze Applicate/CSS pag2 Progetto
** CSS pag3 ProgettoInformatica 3 Liceo Scientifico Scienze Applicate/CSS pag3 Progetto
** CSS pag4 ProgettoInformatica 3 Liceo Scientifico Scienze Applicate/CSS pag4 Progetto
** Realizzazione SitoInformatica 3 Liceo Scientifico Scienze Applicate/Realizzazione Sito
* CSS
** Posizionamento CSSInformatica 3 Liceo Scientifico Scienze Applicate/Posizionamento CSS
Modifica il sommario

## Query attraverso l'istruzione select parte 2

Vediamo l'uso del comando select con la clausola Group By e il caso di query annidate (subquery)
Le tabelle utilizzate sono :
studenti
| IDStudente | Nome | Cognome | DataNascita | CittaNascita | Altezza |
| 1 | Marco | Rossi | 21/1/1980 | Rovigo | 178 |
| 2 | Luca | Verdi | 25/12/1978 | Padova | 180 |
| 3 | Silvia | Blu | 13/9/1997 | Rovigo | 173 |
| 4 | Michele | Giallo | 14/9/1997 | Padova | 167 |
| 5 | Anna | Rossi | 23/2/1995 | Venezia | 180 |
compiti
| IDCompito | Materia | Data | Voto | Tipo | IDstudente |
| 1 | matematica | 13/10/2014 | 7 | scritto | 1 |
| 2 | storia | 23/10/2014 | 8 | scritto | 3 |
| 3 | matematica | 13/11/2014 | 6 | orale | 1 |
| 4 | matematica | 13/11/2014 | 7 | orale | 4 |
| 5 | geografia | 15/5/2013 | 10 | orale | 4 |
| 6 | inglese | 13/4/2013 | 2 | scritto | 2 |
| 7 | storia | 3/10/2016 | 4 | scritto | 1 |

## Group By

1) e' possibile selezionare le righe di una tabella e raggrupparle per un particolare campo, ad esempio possiamo prendere la tabella dei compiti e decidere di raggrupparli per materia per poterne visualizzare il voto medio per ciascuna materia scriviamo allora
dopo il select se utilizziamo il group by possono esserci solo i campi oggetto del raggruppamento e funzioni di aggregazione sui campi della tabella
quindi NON SI PUO' scrivere
posso anche decidere una selezione a livello di raggruppamento ad esempio calcolare il voto medio dei compiti per ciascuna materia limitatamente alle materie con piu' di 3 valutazioni
fate attenzione che il where lavora sulle righe prima del raggruppamento, mentre l' having sui raggruppamenti mediante funzione di aggregazione relative ai campi della tabella
ad esempio voglio il voto medio per ciascuna materia dello studente con codice 7 escludendo le materie con meno di 5 prove
calcolare il voto max e contare quanti compiti sono stati fatti per le materie : storia, geografia e matematica
contare quante prove ci sono suddivise per materia e valutazione ( i 6 con i sei, i 7 con i sette etc)

## Subquery

2) Talvolta c'e' la necessita' piu' di una query per risolvere un particolare quesito, inserendo il risultato di una query fra i parametri di una seconda query, in questo caso abbiamo una subquery .
visualizzare i nomi degli studenti che hanno in storia un voto superiore alla media di tutti gli studenti in quella materia
ora per risolvere il quesito bisogna prima calcolare il voto medio in storia di tutti gli studenti, cioe'
e poi utilizzare la query appena scritta al posto del valore medio dei compiti in storia, quindi
oppure pensiamo a dove risolvere il quesito: stampare il nome e cognome degli studenti nati in una citta' con piu' di 10 iscritti nel nostro istituto ora per trovare le citta' dobbiamo
che inseriamo nella
3) possiamo usare gli operatori
in per verificare se il valore di un campo appartiene a un certo gruppo di valori
not in per verificare se il valore di un campo non appartiene a un certo gruppo di valori
all per verificare se il valore di un campo e' minore o maggiore di tutti i valori di un certo gruppo
any per verificare se il valore di un campo e' minore o maggiore uguale o diverso da almeno uno dei valori di un certo gruppo
exists per verificare se una interrogazione restituisce un numero di righe diverso da zero
4) quando si opera con le subquery si puo salvare una query con un nome e poi utilizzarla come una ulteriore tabella accessibile mediante quel nome ad esempio
salvo
come tabellacittastudentinumerosi
e poi la utilizzo in
5) le subquery possono restituire :
* un solo valore,
ad esempio per visualizzare tutti gli studenti che hanno preso il voto massimo fra i voti della tabella compiti
* una riga di valori
visualizzare i nomi e i cognomi degli studenti la cui altezza è pari all'altezza media degli studenti e che siano i più vecchi della classe
* una colonna di valori
visualizzare i nomi e i cognomi degli studenti che sono nati in città in cui sono nati più di 3 studenti
* una tabella
tutte le informazioni sui compiti degli studenti con una eta>23
6)Query correlate
Nelle soluzioni proposte per evitare di allungare troppo la query si può dare un alias al nome delle tabelle nel FROM, ad esempio
Nel caso di una query annidata, la query più interna può fare riferimento ai campi delle tabelle della query più esterna,in questo caso si parla di subquery correlata alla query principale (quella più esterna) come nel seguente esempio
In questo caso la query interna viene rielaborata per ciascuna riga della query più esterna
Per prepararvi al 2^compito rivedete l'uso dei comandi sql e poi esercitatevi nella creazione dei modelli relazionali e nelle interrogazioni sql con questa dispensaEserciziSQL.pdf (la dispensa è dell'Università di Pisa Prof.Leoni)