Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
4 - SQL : Interrogazioni
Interrogazioni in SQL
SQL si basa sia sullalgebra che sul calcolo relazionale, perci esprime
le interrogazioni in modo misto: in parte dichiarativo e in parte
procedurale.
4 - SQL : Interrogazioni
4 - SQL : Interrogazioni
1.
2.
3.
4 - SQL : Interrogazioni
4 - SQL : Interrogazioni
1.Clausola FROM
Codice
Rossi
Neri
Bianchi
Reparti
Impiegati X Reparti
Impiegato
Codice
Capo
Codice
Rossi
Mori
Capo
Codice
Rossi
Bruni
Mori
Neri
Mori
Bruni
Neri
Bruni
Bianchi
Mori
Basi Bianchi
di Dati 13/14
4 - SQL : Interrogazioni
Bruni
B
2.Clausola WHERE
SELECT DISTINCT Impiegato, Codice
FROM Impiegati, Reparti
WHERE Impiegato = Neri
Impiegati X Reparti
Impiegato
Codice
Capo
Codice
Rossi
Mori
Rossi
Bruni
Neri
Mori
Neri
Bruni
Bruni
Bianchi
Mori
Bianchi
Bruni
4 - SQL : Interrogazioni
3.Clausola SELECT
Impiegato
Codice
Capo
Codice
Rossi
Mori
Rossi
Bruni
Impiegato
Neri
Mori
Neri
Neri
Bruni
Neri
Bianchi
Mori
Bianchi
Bruni
Impiegato
Neri
9
4 - SQL : Interrogazioni
Cognome
Dipart
StipAnn
Mario
Rossi
Amministrazione
45
Carlo
Bianchi
Produzione
36
Giuseppe
Rossi
Amministrazione
40
Franco
Neri
Distribuzione
45
Cognome,Dipart
(Impiegato)
FROM Impiegati
Cognome
Dipart
Cognome
Dipart
Rossi
Amministrazione
Rossi
Amministrazione
Bianchi
Produzione
Bianchi
Produzione
Rossi
Amministrazione
Neri
10
Distribuzione
Neri
Distribuzione
Cognome
Dipart
Rossi
Amministrazione
Bianchi
Produzione
Neri
Distribuzione
Cognome
Dipart
StipAnn
Mario
Rossi
Amministrazione
45
Carlo
Bianchi
Produzione
36
Giuseppe
Verdi
Amministrazione
40
Franco
Neri
Distribuzione
45
Carlo
Rossi
Direzione
80
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
Nome
Cognome
Dipart
StipAnn
Mario
Rossi
Amministrazione
45
Carlo
Rossi
Direzione
80
4 - SQL : Interrogazioni
Ridenominazione
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
cognome Rossi
Salario
45
80
Ridenominazione
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
StipendioMensile
3
4 - SQL : Interrogazioni
si pu scrivere come:
SELECT nome, reddito
FROM persone
WHERE et<30
14
4 - SQL : Interrogazioni
Variabili di range
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
Nome
Cognome
Citt
Mario
Rossi
Milano
Carlo
Bianchi
Torino
Giuseppe
Verdi
Milano
Franco
Neri
Roma
Carlo
Rossi
Milano
Lorenzo
Gialli
Milano
Paola
Rosati
Milano
Marco
Franco
Torino
Variabili di range
SELECT I.Nome, Cognome, Citt
FROM Impiegato as I, Dipartimento as D
WHERE Dipart=D.Nome
equivale a
ESERCIZIO : Estrarre il cognome degli Impiegati con lo stesso Nome che lavorano in
reparti differenti.
I1
SELECT I1.Cognome,
FROM Impiegato I1, Impiegato I2
WHERE I1.Nome=I2.Nome AND
I1.Reparto <> I2.Reparto
16
Nome
Cognome
Reparto
Mario
Rossi
Mario
Bianchi
Gianni
Verdi
Cognome
Rossi
Bianchi
I2
Nome
Cognome
Reparto
Mario
Rossi
Mario
Bianchi
Gianni
Verdi
4 - SQL : Interrogazioni
NOT, AND, OR
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Mario
Rossi
Amministrazione
45
Carlo
Bianchi
Produzione
36
Giuseppe
Verdi
Amministrazione
40
Franco
Neri
Distribuzione
45
Carlo
Rossi
Direzione
80
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
Nome
Citt
Amministrazione
Milano
Produzione
Torino
Distribuzione
Roma
Direzione
Milano
Ricerca
Milano
Nome
Cognome
4 - SQL : Interrogazioni
NOT, AND, OR
Impiegato
Nome
Cognome
Dipart
StipAnn
Mario
Rossi
Amministrazione
45
Carlo
Bianchi
Produzione
36
Giuseppe
Verdi
Amministrazione
40
Nome
Citt
Franco
Neri
Distribuzione
45
Amministrazione
Milano
Carlo
Rossi
Direzione
80
Produzione
Torino
Lorenzo
Gialli
Direzione
73
Distribuzione
Roma
Paola
Rosati
Amministrazione
40
Direzione
Milano
Marco
Franco
Produzione
46
Ricerca
Milano
Dipartimento
ESERCIZIO :Estrarre i nomi degli Impiegati di cognome Rossi che lavorano nei
Nome
Mario
4 - SQL : Interrogazioni
Esercizio
19
Et
Reddito
4 - SQL : Interrogazioni
Soluzione Esercizio
SELECT nome, et, reddito, reddito AS ancoraReddito
FROM Persone
WHERE Reddito >= 20 AND Reddito <= 30
Nome
20
Et
Reddito
ancoraReddito
4 - SQL : Interrogazioni
Operatore LIKE
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Giuseppe
Bianchi
Verdi
Produzione
Amministrazione
36
40
Produzione
Torino
Franco
Franco
Carlo
Carlo
Neri
Neri
Rossi
Rossi
Distribuzione
Distribuzione
Direzione
Direzione
45
45
80
80
Distribuzione
Roma
Direzione
Milano
Lorenzo
Lorenzo
Paola
Paola
Gialli
Gialli
Rosati
Rosati
Direzione
Direzione
Amministrazione
Amministrazione
73
73
40
40
Ricerca
Milano
Marco
Marco
Franco
Franco
Produzione
Produzione
46
46
ESERCIZIO :Estrarre gli Impiegati con un nome che comincia una m e che ha la
4 - SQL : Interrogazioni
Cognome
Dipart
StipAnn
Mario
Rossi
Amministrazione
45
Carlo
Bianchi
Produzione
36
Giuseppe
Verdi
Amministrazione
40
Franco
Neri
Distribuzione
45
Carlo
Rossi
Rossi
Direzione
Direzione
80
Lorenzo
Lorenzo
Gialli
Gialli
Direzione
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Franco
Produzione
Produzione
NULL
Stessa interrogazione
espressa in algebra
relazionale.
4 - SQL : Interrogazioni
Esercizio
23
Cognome
Filiale
Stipendio
4 - SQL : Interrogazioni
Soluzione Esercizio
SELECT Stipendio, Stipendio*2 AS StipendioBIS
FROM Impiegati
WHERE Filiale = Milano OR Filiale = Roma
Stipendio
24
StipendioBIS
4 - SQL : Interrogazioni
si pu descrivere in termini di :
25
R2) )
A1,A4 (A2=A3(R1
4 - SQL : Interrogazioni
Esercizio
Persone
Paternit
Nome
26
Reddito
Padre
Figlio
4 - SQL : Interrogazioni
Soluzione Esercizio
Persone
Paternit
Nome
Reddito
Padre
Figlio
27
Padre (paternit
figlio=nome
(reddito>20(persone)) )
4 - SQL : Interrogazioni
Esercizio
Persone
nome
28
Paternit
reddito
padre
Maternit
figlio
madre
figlio
4 - SQL : Interrogazioni
Soluzione Esercizio
Persone
Paternit
nome
reddito
Maternit
padre
figlio
madre
29
(paternit
figlio
I JOIN (e i prodotti
cartesiani) si realizzano
indicando due o pi
tabelle nella clausola
FROM.
maternit)
4 - SQL : Interrogazioni
Esercizio
Persone
Paternit
Nome
30
Reddito
Padre
Figlio
4 - SQL : Interrogazioni
Soluzione Esercizio
Persone
Paternit
Nome
Reddito
Padre
Figlio
31
4 - SQL : Interrogazioni
JOIN Esplicito
4 - SQL : Interrogazioni
Paternit
reddito
padre
Maternit
figlio
madre
figlio
4 - SQL : Interrogazioni
nome
Paternit
reddito
padre
figlio
4 - SQL : Interrogazioni
JOIN Naturale
In SQL possibile esprimere anche la condizione di JOIN
naturale, anche se un comando poco diffuso.
Paternit
padre
Maternit
figlio
madre
figlio
35
(paternit
maternit)
4 - SQL : Interrogazioni
JOIN Esterni
Il join esterno estende, con valori nulli, le tuple che verrebbero tagliate fuori da un
join (interno). Esiste in tre versioni:
sinistro: mantiene tutte le tuple del primo operando, estendendole con valori nulli, se
necessario
destro: ... del secondo operando ...
completo: di entrambi gli operandi ...
36
4 - SQL : Interrogazioni
4 - SQL : Interrogazioni
4 - SQL : Interrogazioni
4 - SQL : Interrogazioni
Il comando ORDER BY
40
4 - SQL : Interrogazioni
ORDER BY
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
Ordinamento ascendente
per Nome e Cognome.
Prima vengono ordinati i
valori contenuti in Nome.
Nome
Cognome
Giuseppe
Verdi
Mario
Rossi
Paola
Rosati
Successivamente,
per tuple che hanno
lo stesso valore in
Nome, si ordinano i
valori di Cognome.
Operatori Aggregati
42
4 - SQL : Interrogazioni
Operatori aggregati
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
count(*)
2
Cognome
Dipart
StipAnn
Carlo
Bianchi
Produzione
36
Marco
Franco
Produzione
46
SELECT count(*)
FROM Impiegato
WHERE Dipart = Produzione
4 - SQL : Interrogazioni
45
4 - SQL : Interrogazioni
Operatori aggregati
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
righe di Impiegato
SELECT count(DISTINCT StipAnn)
FROM Impiegato
46
count(distinct StipAnn)
6
4 - SQL : Interrogazioni
Operatori aggregati
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
ESERCIZIO : Trovare il numero della persone che hanno sia il nome che il cognome
specificato
SELECT count(ALL Nome, Cognome) AS Tutti
FROM Impiegato
47
Tutti
8
4 - SQL : Interrogazioni
NULL
48
4 - SQL : Interrogazioni
49
4 - SQL : Interrogazioni
Loperatore SUM
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Lorenzo
Gialli
Direzione
73
Ricerca
Milano
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
SUM(StipAnn)
125
4 - SQL : Interrogazioni
Loperatore MAX
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
ESERCIZIO :Estrarre il massimo stipendio tra quelli degli impiegati che lavorano in
MAX(StipAnn)
80
4 - SQL : Interrogazioni
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
ESERCIZIO :Estrarre gli stipendi minimo, massimo e medio fra quelli di tutti gli
impiegati
SELECT MAX(StipAnn),
MIN(StipAnn),
AVG(StipAnn)
FROM Impiegato
52
MAX(StipAnn)
MIN(StipAnn)
AVG(StipAnn)
80
36
51
4 - SQL : Interrogazioni
ATTENZIONE
ATTENZIONE = Questa interrogazione corretta?
SELECT Nome,Cognome, MAX(StipAnn)
FROM Impiegato
WHERE Dipart=Amministrazione
ORDER BY Nome, Cognome
4 - SQL : Interrogazioni
54
4 - SQL : Interrogazioni
GROUP BY
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
ESERCIZIO :Estrarre la somma degli stipendi degli impiegati che lavorano nello
stesso dipartimento
SELECT Dipart, SUM(StipAnn)
FROM Impiegato
GROUP BY Dipart
55
Dipart
SUM(StipAnn)
Amministrazione
125
Produzione
82
Distribuzione
45
Direzione
153
Se nella SELECT presente un operatore aggregato, solo gli attributi contenuti nella
GROUP BY potranno eventualmente comparire nella SELECT stessa (insieme
alloperatore aggregato)
Dipart
StipAnn
Amministrazione
45
Produzione
36
Amministrazione
40
Distribuzione
45
Direzione
80
Direzione
73
Amministrazione
40
Produzione
46
Dipart
StipAnn
Amministrazione
45
Amministrazione
40
Amministrazione
40
Produzione
46
Produzione
36
Direzione
80
Direzione
73
Distribuzione
45
3) Dopo che le righe sono state raggruppate in sotto-insiemi, loperatore aggregato viene
applicato separatamente su ogni sotto-insieme. Il risultato dellinterrogazione costituito
da una tabella con righe che contengono lesito della valutazione delloperatore aggregato
affiancato al valore dellattributo che stato usato per laggregazione.
Dipart
SUM(StipAnn)
Amministrazione
125
Produzione
82
Distribuzione
45
Direzione
153
57
4 - SQL : Interrogazioni
StipAnn
Amministrazione
45
Amministrazione
40
Amministrazione
40
Produzione
46
Dipart
SUM(StipAnn)
Produzione
36
Amministrazione
Direzione
80
Produzione
Direzione
73
Distribuzione
Distribuzione
45
Direzione
Dipart
StipAnn
Amministrazione
45
Amministrazione
40
Amministrazione
40
Produzione
46
Produzione
36
Direzione
80
Direzione
73
Distribuzione
45
StipAnn
count(StipAnn)
Amministrazione
45
Amministrazione
40
Produzione
46
Produzione
36
Direzione
80
Direzione
73
45
60
Dipart
Distribuzione
58
4 - SQL : Interrogazioni
Clausola HAVING
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Giuseppe
Verdi
Amministrazione
40
Produzione
Torino
Franco
Neri
Distribuzione
45
Distribuzione
Roma
Carlo
Rossi
Direzione
80
Direzione
Milano
Lorenzo
Gialli
Direzione
73
Ricerca
Milano
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
Dipart
Sommastipendi
Amministrazione
125
Direzione
153
Clausola HAVING
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
ESERCIZIO :Estrarre i dipartimenti per cui la media degli stipendi degli impiegati
Dipart
Amministrazione
Direzione
64
4 - SQL : Interrogazioni
Esercizio
Persone
Paternit
nome
65
et
reddito
padre
figlio
4 - SQL : Interrogazioni
Soluzione Esercizio
Persone
Paternit
nome
et
reddito
padre
figlio
66
4 - SQL : Interrogazioni
Unione
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
Nome
Mario
Carlo
...
SELECT Nome
FROM Impiegato
UNION
SELECT Cognome
FROM Impiegato
Rossi
Se si vogliono
mantenere i
duplicati si
utilizza
UNION ALL.
Bianchi
...
4 - SQL : Interrogazioni
Intersezione
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
Nome
Franco
4 - SQL : Interrogazioni
Differenza
Impiegato
Dipartimento
Nome
Cognome
Dipart
StipAnn
Nome
Citt
Mario
Rossi
Amministrazione
45
Amministrazione
Milano
Carlo
Bianchi
Produzione
36
Produzione
Torino
Giuseppe
Verdi
Amministrazione
40
Distribuzione
Roma
Franco
Neri
Distribuzione
45
Direzione
Milano
Carlo
Rossi
Direzione
80
Ricerca
Milano
Lorenzo
Gialli
Direzione
73
Paola
Rosati
Amministrazione
40
Marco
Franco
Produzione
46
Giuseppe
Lorenzo
Paola
Marco
4 - SQL : Interrogazioni
Conclusioni
4 - SQL : Interrogazioni
Esercizi di riepilogo
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
4 - SQL : Interrogazioni
Esercizio 1 1\7
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
Nipote
Nonno
Marco
Mario
4 - SQL : Interrogazioni
Esercizio 1 2\7
ESERCIZIO : Estrarre i nonni di ogni persona
SELECT P.Figlio AS Nipote, N.Genitore AS Nonno
FROM Genitori P, Genitori N
WHERE P.Genitore = N.Figlio
P
N
Figlio
Genitore
Figlio
Genitore
Paola
Mario
Paola
Mario
Marco
Paola
Marco
Paola
Carlo
Gianni
Carlo
Gianni
Carlo
Maria
Carlo
Maria
Francesca
Giuseppe
Francesca
Giuseppe
Marco
Giuseppe
Marco
Giuseppe
73
4 - SQL : Interrogazioni
Esercizio 1 3\7
ESERCIZIO : Estrarre i nonni di ogni persona
N
Figlio
Genitore
Figlio
Genitore
Paola
Mario
Paola
Mario
Marco
Paola
Marco
Paola
Carlo
Gianni
Carlo
Gianni
Carlo
Maria
Carlo
Maria
Francesca
74
Marco
Giuseppe
Francesca
Giuseppe
Giuseppe
Marco
Giuseppe
4 - SQL : Interrogazioni
Esercizio 1 4\7
ESERCIZIO : Estrarre i nonni di ogni persona
N
Figlio
Genitore
Figlio
Genitore
Paola
Mario
Paola
Mario
Marco
Paola
Marco
Paola
Carlo
Gianni
Carlo
Gianni
Carlo
Maria
Carlo
Maria
Francesca
75
Marco
Giuseppe
Francesca
Giuseppe
Giuseppe
Marco
Giuseppe
4 - SQL : Interrogazioni
Esercizio 1 5\7
ESERCIZIO :Estrarre i nonni di ogni persona
N
Figlio
Genitore
Figlio
Genitore
Paola
Mario
Paola
Mario
Marco
Paola
Marco
Paola
Carlo
Gianni
Carlo
Gianni
Carlo
Maria
Carlo
Maria
Francesca
76
Marco
Giuseppe
Francesca
Giuseppe
Giuseppe
Marco
Giuseppe
4 - SQL : Interrogazioni
Esercizio 1 6\7
ESERCIZIO :Estrarre i nonni di ogni persona
P.Figlio
P.Genitore
N.Figlio
N.Genitore
Marco
Paola
Paola
Mario
77
4 - SQL : Interrogazioni
Esercizio 1 7\7
ESERCIZIO :Estrarre i nonni di ogni persona
P.Genitore
N.Figlio
N.Genitore
Marco
Paola
Paola
Mario
P.Figlio
N.Genitore
Nipote
Nonno
Marco
Mario
Marco
Mario
78
4 - SQL : Interrogazioni
Esercizio 2 1\6
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
Nome1
Nome2
Marco
Francesca
Francesca
Marco
4 - SQL : Interrogazioni
Esercizio 2 2\6
ESERCIZIO : Trovare la relazione che mostra le coppie di fratelli
G2
Figlio
Genitore
Genitore
Figlio
Paola
Mario
Mario
Paola
Marco
Paola
Paola
Marco
Carlo
Gianni
Gianni
Carlo
Carlo
Maria
Maria
Carlo
Francesca
Giuseppe
Giuseppe
Francesca
Marco
Giuseppe
Giuseppe
Marco
80
4 - SQL : Interrogazioni
Esercizio 2 3\6
ESERCIZIO :Trovare la relazione che mostra le coppie di fratelli
G2
Figlio
Genitore
Genitore
Figlio
Paola
Mario
Mario
Paola
Marco
Paola
Paola
Marco
Carlo
Gianni
Gianni
Carlo
Carlo
Maria
Maria
Carlo
Francesca
Giuseppe
Giuseppe
Francesca
Marco
Giuseppe
Giuseppe
Marco
81
Esercizio 2 4\6
ESERCIZIO :Trovare la relazione che mostra le coppie di fratelli
G2
Figlio
Genitore
Genitore
Figlio
Paola
Mario
Mario
Paola
Marco
Paola
Paola
Marco
Carlo
Gianni
Gianni
Carlo
Carlo
Maria
Maria
Carlo
Francesca
Giuseppe
Giuseppe
Francesca
Marco
Giuseppe
Giuseppe
Marco
82
4 - SQL : Interrogazioni
Esercizio 2 5\6
ESERCIZIO :Trovare la relazione che mostra le coppie di fratelli
G1.Figlio
G1.Genitore
G2.Genitore
G2.Figlio
Paola
Mario
Mario
Paola
Marco
Paola
Paola
Marco
Carlo
Gianni
Gianni
Carlo
Carlo
Maria
Maria
Carlo
Francesca
Giuseppe
Giuseppe
Francesca
Francesca
Giuseppe
Giuseppe
Marco
Marco
Giuseppe
Giuseppe
Francesca
Marco
83
Giuseppe
Giuseppe
Marco
Esercizio 2 6\6
ESERCIZIO :Trovare la relazione che mostra le coppie di fratelli
G1.Figlio
G1.Genitore
G2.Genitore
G2.Figlio
Francesca
Giuseppe
Giuseppe
Marco
Marco
Giuseppe
Giuseppe
Francesca
Nome1
Nome2
G1.Figlio
G2.Figlio
Francesca
Marco
Francesca
Marco
Marco
Francesca
Marco
Francesca
4 - SQL : Interrogazioni
Esercizio 3
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
raggruppati per et
SELECT Et, AVG(reddito) AS AVG_REDDITO
FROM Persone, Genitori
WHERE Nome = Genitore AND Sesso = 'M'
GROUP BY et
85
et
AVG_REDDITO
45
30
50
60
80
15
4 - SQL : Interrogazioni
Esercizio 4
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
SELECT Genitore
FROM Genitori
GROUP BY Genitore
HAVING count(DISTINCT Figlio) >= 2
86
Genitore
Giuseppe
4 - SQL : Interrogazioni
Esercizio 5
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
ESERCIZIO :Trovare l'elenco ordinato dei genitori in cui almeno un figlio guadagna
pi di 20 milioni
Genitore
Gianni
Giuseppe
Maria
Mario
87
Paola
Esercizio 6
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
ESERCIZIO :Trovare l'elenco ordinato dei genitori in cui tutti i figli guadagnano
88
Genitore
Gianni
Maria
Mario
Paola
Esercizio 7 1\2
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
ESERCIZIO : Trovare la relazione che mostra per ciascun figlio i rispettivi genitori
4 - SQL : Interrogazioni
Esercizio 7 2\2
ESERCIZIO :Trovare la relazione che mostra per ciascun figlio i rispettivi genitori
GP
Nome
Reddito
Et
Sesso
PM
Figlio
Genitore
Figlio
Genitore
GM
Nome
90
Reddito
Et
Sesso
Padre
Madre
Figlio
Giuseppe
Paola
Marco
Gianni
Maria
Carlo
4 - SQL : Interrogazioni
Esercizio 8
Persone
Genitori
Nome
Reddito
Et
Sesso
Mario
15
80
Carlo
25
24
Giuseppe
30
45
Maria
76
43
Gianni
60
50
Francesca
18
26
Paola
45
60
Marco
80
35
Figlio
Genitore
Paola
Mario
Marco
Paola
Carlo
Gianni
Carlo
Maria
Francesca
Giuseppe
Marco
Giuseppe
RedditoCompl
25
4 - SQL : Interrogazioni