1)Elenco degli studenti indicando il numero di matricola , cognome e
nome, indirizzo, numero di telefono ed età.

SOLUZIONE 1:
SELECT st_matricola,st_cognome,st_nome,('2026-03-14' - st_nascita) /365.0 
FROM studenti
ORDER BY st_cognome

SOLUZIONE 2:
SELECT st_matricola,st_cognome,st_nome,AGE(st_nascita) as Eta
FROM studenti
ORDER BY st_cognome

2) Elenco dei nomi degli studenti

SOLUZIONE 1 (GROUP BY)
SELECT ALL st_nome 
FROM studenti
GROUP BY st_nome
ORDER BY st_nome


SOLUZIONE 2 (DISTINCT)
SELECT DISTINCT st_nome 
FROM studenti
ORDER BY st_nome


3)Elenco degli insegnanti e della rispettiva materia d insegnamento

SOLUZIONE 1
SELECT in_cognome,in_nome,mt_descr
FROM insegnanti,materie
WHERE in_codice = mt_docente
ORDER BY in_cognome,in_nome

SOLUZIONE 2
SELECT in_cognome,in_nome,mt_descr
FROM insegnanti JOIN materie 
ON in_codice = mt_docente
ORDER BY in_cognome,in_nome

4)Elenco dei voti assegnati nelle verifiche indicando il nome della
materia, cognome e nome degli insegnanti e degli studenti

SOLUZIONE 1

SELECT mt_descr,st_cognome,st_nome,vr_voto,in_cognome
FROM materie,studenti,verifiche,insegnanti
WHERE st_matricola = vr_studente AND mt_sigla = vr_materia AND in_codice = mt_docente
ORDER BY mt_descr,st_cognome

5) Elenco delle materia con il numero di verifiche complessivamente fatte per ciascuna materia.
SELECT mt_descr, COUNT(*) AS numero_verifiche
    FROM materie, verifiche
    WHERE vr_materia = mt_sigla
    GROUP BY mt_descr
    ORDER BY mt_descr;

6) Elenco delle materie con il numero di verifiche complessivamente fatte e la media generale per ciascuna materia.
SELECT mt_descr, COUNT(*) AS numero_verifiche, ROUND(AVG(vr_voto), 2) AS media
    FROM materie, verifiche
    WHERE vr_materia = mt_sigla
    GROUP BY mt_descr
    ORDER BY mt_descr;
	
7)  Numero di verifiche fatte dai singoli insegnanti.
SELECT mt_descr, in_cognome, COUNT(*) AS numero_verifiche
FROM insegnanti JOIN materie ON in_codice = mt_docente
JOIN verifiche ON mt_sigla = vr_materia
GROUP BY mt_descr, in_cognome
ORDER BY mt_descr

8)Aggiungere al punto precedente anche la media dei voti assegnati
SELECT mt_descr, in_cognome, COUNT(*) AS numero_verifiche, ROUND(AVG(vr_voto), 2) AS voto_medio
FROM insegnanti JOIN materie ON in_codice = mt_docente
JOIN verifiche ON mt_sigla = vr_materia
GROUP BY mt_descr, in_cognome
ORDER BY mt_descr

9)Indicare per ogni insegnante il voto minimo ed il voto massimo assegnato.
SELECT in_cognome, in_nome, mt_descr, MIN(vr_voto), MAX(vr_voto)
FROM insegnanti JOIN materie ON in_codice = mt_docente
JOIN verifiche ON mt_sigla = vr_materia
GROUP BY in_cognome, in_nome, mt_descr
ORDER BY in_cognome

10)Numero di verifiche fatte da ogni singolo studente in tutte le materie.
SELECT st_cognome, st_nome, COUNT(*) AS verifiche_studente
FROM studenti JOIN verifiche ON st_matricola = vr_studente
GROUP BY st_cognome, st_nome
ORDER BY st_cognome