-- Query partendo dalle piu' fattibili

-- 3) Chi non ha capogruppo

SELECT id, cognome, nome
FROM classe 
WHERE id NOT IN (

	SELECT id 
	FROM classe
	WHERE capo IS NOT NULL 

);


-- 4) Un gruppo, dato il suo capogruppo

SELECT id, cognome, nome
FROM classe
WHERE capo = 1


-- 5) Un gruppo, dato un componente del gruppo

SELECT id, cognome, nome, capo
FROM classe  
WHERE id IN (

	SELECT capo
	FROM classe
	WHERE id = 16

)

UNION

SELECT id, cognome, nome, capo
FROM classe  
WHERE capo IN (

	SELECT capo
	FROM classe
	WHERE id = 16

)
ORDER BY id;


-- 6) Quanti componenti ha ciascun gruppo

SELECT capo, COUNT(id) + 1 AS componenti
FROM classe
WHERE capo IS NOT NULL
GROUP BY capo
ORDER BY capo


-- 7) Il gruppo piu' numeroso

CREATE VIEW gruppi AS (

	SELECT capo, COUNT(id) + 1 AS componenti
	FROM classe
	WHERE capo IS NOT NULL
	GROUP BY capo

);

SELECT capo, componenti
FROM gruppi
WHERE componenti = (

	SELECT MAX(componenti)
	FROM gruppi
	
)




