-- 1.Selezionare il nome della regione seguito dal numero di abitanti, chiamando tale quantità “popolazione”.
SELECT r.nome, SUM(c.popolazione) AS popolazione
FROM regione AS r
	INNER JOIN provincia AS p ON p.codice_istat_regione = r.codice_istat
	INNER JOIN comune AS c ON c.codice_istat_provincia = p.codice_istat
GROUP BY r.nome
ORDER BY popolazione DESC;

-- 2. Selezionare il nome della regione seguito dai casi positivi in tutta la regione al 31 maggio, chiamando quest’ultima quantità “casi_covid_al_31_maggio”.
SELECT r.nome, SUM(cc.casi_positivi_totali) AS casi_covid_al_31_maggio
FROM regione AS r
	INNER JOIN provincia AS p ON p.codice_istat_regione = r.codice_istat
	INNER JOIN casi_covid AS cc ON cc.codice_istat_provincia = p.codice_istat
WHERE MONTH(cc.data)=5 AND DAY(cc.data)=31 
GROUP BY r.nome
ORDER BY casi_covid_al_31_maggio DESC;

-- 3. Selezionare il nome della regione e la percentuale di positivi al 31 maggio, solo per le regioni con una percentuale di positivi superiore allo 0.5%.
SELECT r.nome, SUM(cc.casi_positivi_totali)/SUM(pop.popolazione)*100 AS percentuale
FROM provincia AS p INNER JOIN
	(SELECT p1.codice_istat, SUM(popolazione) as popolazione
		FROM provincia AS p1
			INNER JOIN comune c1 on c1.codice_istat_provincia = p1.codice_istat
		GROUP BY p1.codice_istat
    ) AS pop ON p.codice_istat = pop.codice_istat
    INNER JOIN regione AS r ON p.codice_istat_regione = r.codice_istat
    INNER JOIN casi_covid AS cc ON p.codice_istat = cc.codice_istat_provincia
WHERE MONTH(cc.data)=5 and DAY(cc.data)=31
GROUP BY r.nome
HAVING percentuale > 0.5
ORDER BY percentuale DESC;

-- 4.Per ogni regione (identificata solo dal nome), contare il numero di province e di comuni, chiamando rispettivamente questi campi “numero_province” e “numero_comuni”
SELECT r.nome, num_prov.num AS numero_province, num_com.num AS numero_comuni
FROM  regione AS r
	INNER JOIN
	(
    SELECT codice_istat_regione, COUNT(*) AS num
    FROM provincia
    GROUP BY codice_istat_regione
    ) num_prov ON num_prov.codice_istat_regione = r.codice_istat
    INNER JOIN
    (
    SELECT codice_istat_regione, COUNT(*) AS num
    FROM provincia AS p
    INNER JOIN comune AS c ON c.codice_istat_provincia = p.codice_istat
    GROUP BY codice_istat_regione
    ) num_com ON num_com.codice_istat_regione = r.codice_istat;

-- 5. Selezionare, per ogni provincia (rappresentata da codice_istat, nome e abbreviazione), il numero di acquisizioni totali fatte (una acquisizione = un record in “casi_covid”), indicando questa quantità con “numero_acquisizioni”.
SELECT p.codice_istat, p.nome, p.abbreviazione, COUNT(*) as numero_acquisizioni
FROM provincia AS p
	INNER JOIN casi_covid AS cc ON p.codice_istat = cc.codice_istat_provincia
GROUP BY p.codice_istat, p.nome, p.abbreviazione;
