/* Problema N. 2*/
.header on
.mode column

CREATE TABLE Docenti(
  coddocente CHAR(5) PRIMARY KEY,
  cognome CHAR(20),
  nome CHAR(20),
  codmateria CHAR(5) REFERENCES materie(codmateria));

CREATE TABLE Materie(
  codmateria CHAR(5) PRIMARY KEY,
  descrizione CHAR(20)
);

CREATE TABLE Voti(
  idvoto INTEGER PRIMARY KEY,
  voto REAL NOT NULL,
  datavoto date,
  codmateria CHAR(5) references materie(codmateria),
  codstudente CHAR(5) references studenti(codstudente),
  coddocente CHAR(5) references docenti(coddocente)
);

CREATE TABLE Studenti(
  codstudente CHAR(5) PRIMARY KEY,
  cognome CHAR(20),
  nome CHAR(20),
  classe CHAR(4),
  email CHAR(40),
  cellulare CHAR(15)
);
INSERT INTO Studenti
     (codstudente, cognome, nome, classe, email, cellulare)
   values
    ("S001", "ROSSI", "MARIO", "3AAP", "mario.rossi@gmail.com", "390123456"),
    ("S002", "ARDOVINI", "MARIA VITTORIA", "5AAP", "mariavittoria.ardovini@francescoseveri.org", "390123457"),
    ("S003", "BORREA", "MARTA", "5AAP", "marta.borrea@francescoseveri.org", "390123458"),
    ("S004", "BOTTARO", "FLAVIO", "5AAP", "flavio.bottaro@francescoseveri.org", "0775123456"),
    ("S005", "CHIAPPINI", "MATTEO", "5AAP", "matteo.chiappini@francescoseveri.org", "0775123457"),
    ("S022", "BRACAGLIA", "ELISA", "5BAP", "elisa.bracaglia@francescoseveri.org", "390123451"),
    ("S029", "FERRAGONIO", "AURORA", "5BAP", "aurora.ferragonio@francescoseveri.org", "390123452"),
    ("S030", "FIACCO", "SIMONE", "5BAP", "simone.fiacco@francescoseveri.org", "390123453"),
    ("S031", "GRIGORE", "ALESSIO FIORELLO", "5BAP", "alessiofiorello.grigore@francescoseveri.org", "390123454"),
    ("S032", "LABBIENTO", "MATTEO", "5BAP", "matteo.labbiento@francescoseveri.org", "0775123461"),
    ("S033", "LAURETTI", "PAOLO", "5BAP", "paolo.lauretti@francescoseveri.org", "0775123462"),
    ("S034", "PROFETA", "FRANCESCO", "5BAP", "francesco.profeta@francescoseveri.org", "390123461"),
    ("S052", "MAGI", "SAMUELE", "5CAP", "samuele.magi@francescoseveri.org", "390123462"),
    ("S053", "MANDATORI", "ELISA", "5CAP", "elisa.mandatori@francescoseveri.org", "390123463"),
    ("S054", "PANICCIA", "ANTONIO", "5CAP", "antonio.paniccia@francescoseveri.org", "390123463");

INSERT INTO Studenti
     (codstudente, cognome, nome, classe, email)
   values
    ("S055", "SORGE", "NATALIA", "5CAP", "natalia.sorge@francescoseveri.org" ),
    ("S056", "TOMASI", "MARCO", "5CAP", "marco.tomasi@francescoseveri.org" );

INSERT INTO Materie
    (codmateria, descrizione)
VALUES 
    ('Mat','Matematica'),
    ('Inf','Informatica'),
    ('Ing','Inglese'),
    ('Ita','Italiano');

INSERT INTO Docenti
    (coddocente, cognome, nome, codmateria)
VALUES 
    ('D001','Addesse','Paola','Mat'),
    ('D002','Cappadozzi','Leopoldo','Inf'),
    ('D003','Gramiccia','Carla','Ing');

INSERT INTO Voti
    (idvoto, voto, datavoto, codmateria, codstudente, coddocente)
VALUES 
    (1,3, '2023-10-10','Ing','S001','D003'),
    (2,6, '2023-10-10','Mat','S002','D001'),
    (3,8, '2023-10-11','Mat','S003','D001'),
    (4,4, '2023-11-01','Inf','S001','D002'),
    (5,7, '2023-11-01','Inf','S002','D002'),
    (6,9, '2023-11-02','Inf','S003','D002');


.print '_______________________'

.print
--53
    SELECT voto, classe, Max(voto) AS migliore_mat
    FROM Voti v, Studenti s
    WHERE classe LIKE '3%'
    AND codmateria='Mat'
    AND v.codstudente=s.codstudente
    GROUP BY classe, voto;

.print
--54
    SELECT codstudente, MAX(voto) AS migliore, MIN(voto) AS peggiore
    FROM Voti
    WHERE codstudente='S003'
    GROUP BY codstudente;

.print
--55
    SELECT descrizione, datavoto, voto
    FROM Voti v, Materie m
    WHERE codstudente='S002'
    AND v.codmateria=m.codmateria
    ORDER BY descrizione, datavoto;

.print
--56
    SELECT d.cognome, s.classe, s.cognome, s.nome
    FROM Docenti d, Studenti s, Voti v
    WHERE d.cognome='Cappadozzi'
    AND d.coddocente=v.coddocente
    AND s.codstudente=v.codstudente
    ORDER BY s.classe, s.cognome, s.nome;

.print
--57
    SELECT cognome, nome, COUNT(voto) AS voto_6
    FROM Studenti s, Voti v
    WHERE codmateria='Inf'
    AND voto>=6
    AND s.codstudente=v.codstudente
    GROUP BY cognome, nome
    ORDER BY cognome, nome;

.print
--58
    SELECT cognome, nome, classe, COUNT(voto) AS voto_5
    FROM Studenti s, Voti v
    WHERE classe='5BAP'
    AND voto<5
    AND s.codstudente=v.codstudente
    GROUP BY cognome, nome;



















Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: