• Non ci sono risultati.

— Esempi di istruzioni SQL —Pag.

N/A
N/A
Protected

Academic year: 2021

Condividi "— Esempi di istruzioni SQL —Pag. "

Copied!
3
0
0

Testo completo

(1)

— Esempi di istruzioni SQL — Pag. di 1 3

Si supponga si avere le seguenti tabelle, dove Esami.MatricolaStudente è chiave esterna nella relazione Studenti (1;1) → Esami (0;N):

Studenti(Matricola, Cognome, Nome)

Esami(Id, MatricolaStudente, Materia, Data, Voto) ESEMPIO 1

Volendo visualizzare per ciascun voto conseguito negli esami dagli studenti la relativa frequenza (n.ro di esami in cui gli studenti hanno conseguito quel voto) scriveremo la seguente istruzione SQL:

SELECT Voto, COUNT(Voto) AS Frequenza FROM Esami

GROUP BY Voto ORDER BY Voto;

Un possibile risultato sarà:

+——————+———————————+

| Voto | Frequenza | +——————+———————————+

| 5 | 345 | +——————+———————————+

| 10 | 120 | +——————+———————————+

| … | … | +——————+———————————+

| 18 | 95 | +——————+———————————+

| … | … | +——————+———————————+

| 30 | 10 | +——————+———————————+

ESEMPIO 2

Se invece vogliamo solo le frequenza dei voti da 18 a 30 scriveremo:

SELECT Voto, COUNT(Voto) AS Frequenza FROM Esami

WHERE Voto>=18 GROUP BY Voto ORDER BY Voto;

oppure:

SELECT Voto, COUNT(Voto) AS Frequenza FROM Esami

GROUP BY Voto HAVING Voto>=18 ORDER BY Voto;

N.B. Quale delle due versioni è preferibile?

(2)

— Esempi di istruzioni SQL — Pag. di 2 3

ESEMPIO 3

Se si vuole ottenere la frequenza degli esami per il gruppo di voti da 18 a 20 scriveremo:

SELECT ‘Voti 18-20’ AS Gruppo, COUNT(Voto) AS Frequenza FROM Esami

WHERE Voto BETWEEN 18 AND 20 GROUP BY Voto

ORDER BY Voto;

Un possibile risultato sarà:

+————————————+———————————+

| Gruppo | Frequenza | +————————————+———————————+

| Voti 18-20 | 1452 | +————————————+———————————+

ESEMPIO 4

Per visualizzare e memorizzare la frequenza per i due gruppi di voti 18-20 e 21-23 utilizzeremo le seguenti istruzioni:

CREATE TABLE Voti(Gruppo VARCHAR(10) NOT NULL PRIMARY KEY, Frequenza INT);

INSERT INTO Voti(Gruppo, Frequenza)

SELECT ‘Voti 18-20’ AS Gruppo, COUNT(Voto) AS Frequenza FROM Esami

WHERE Voto IN (18,19,20) GROUP BY Voto

UNION

SELECT ‘Voti 21-23’ AS Gruppo, COUNT(Voto) AS Frequenza FROM Esami

WHERE Voto IN (21,22,23) GROUP BY Voto

ORDER BY 1;

Un possibile risultato sarà:

+————————————+———————————+

| Gruppo | Frequenza | +————————————+———————————+

| Voti 18-20 | 1452 | +————————————+———————————+

| Voti 21-23 | 746 | +————————————+———————————+

(3)

— Esempi di istruzioni SQL — Pag. di 3 3

ESEMPIO 5

Per visualizzare l’elenco alfabetico degli studenti con i relativi esami sostenuti è necessario collegare (join) le due tabelle Studenti ed Esami. Una prima rudimentale forma di join è quella che fa uso del prodotto cartesiano e del filtro sulle righe:

SELECT s.Cognome, s.Nome, e.Materia, e.Data, e.Voto FROM Studenti AS s, Esami AS e

WHERE s.Matricola=e.MatricolaStudente ORDER BY 1, 2;

Una versione più sofisticata ed efficiente è quella che fa esplicito uso della clausola JOIN:

SELECT s.Cognome, s.Nome, e.Materia, e.Data, e.Voto

FROM Studenti AS s INNER JOIN Esami AS e ON s.Matricola=e.MatricolaStudente ORDER BY 1, 2;

ESEMPIO 6

Si supponga di voler invece l’elenco alfabetico di tutti studenti e degli eventuali esami sostenuti. Questa volta occorrerà fare uso dell’inner join:

SELECT s.Cognome, s.Nome, e.Materia, e.Data, e.Voto FROM Studenti AS s LEFT OUTER JOIN Esami AS e

ORDER BY 1, 2;

ESEMPIO 7

Se infine vogliamo l’elenco alfabetico degli studenti che hanno sostenuto l’esame di Sistemi in data 17/10/2016 scriveremo:

SELECT s.Cognome, s.Nome, e.Materia, e.Data, e.Voto FROM Studenti AS s INNER JOIN Esami AS e

WHERE e.Materia=‘SISTEMI’ AND e.Data=‘2016-10-17’

ORDER BY 1, 2;

Riferimenti

Documenti correlati

Gli studenti intenzionati a sostenere la prova di Biologia Applicata all'Attività Psichica dovranno iscriversi all'esame, sia utilizzando l'apposita funzione di segreteria

[r]

[r]

[r]

136 CONFCOOPERATIVE PADOVA 136 CONFINDUSTRIA PADOVA 138 SALETTA SISTEMA PADOVA 142 SOCIALMENTE PRESEPI 143 PROVINCIA DI PADOVA 146 CAMERA DI COMMERCIO DI PADOVA 157 REGIONE

[r]

tuzione in forma italiana dei cognomi delle famiglie della Venezia Tridentina ed il decreto Ministeriale 5 agosto 1926 che approva le istruzioni per la esecuzione del R. 1 di

Sulla base delle indicazioni contenute nell’accordo Stato/Regione del 10 Novembre 2016 è stata predisposta una nuova tabella per la valutazione del rischio che