-- ============================================================================
-- Esercitazione su SQL
-- Soluzione dell'esercizio 5
-- ============================================================================

-- 1) Trovare le persone che sono genitori di almeno 2 figli.

SELECT genitore
FROM Genitori
GROUP BY genitore
HAVING COUNT(figlio) >= 2;


-- 2) Trovare l'eta` media dei geniori di Olga 

SELECT avg(eta) AS EtaMedia 
FROM PERSONE P, GENITORI 
WHERE Figlio='Olga' AND
    Genitore=Nome;

-- 3) Trovare il reddito complessivo dei figli di Anna e Luigi

SELECT sum(P.reddito) AS REDDITOCOMPL FROM PERSONE AS P, GENITORI GP, GENITORI GM
WHERE GP.Figlio=GM.Figlio AND
      GP.Genitore='Anna' AND
      GM.Genitore='Luigi' AND GP.Figlio=P.Nome;


-- 4) Trovare per ogni persona il numero dei suoi figli.

SELECT genitore AS persona, COUNT(*) AS numfigli
FROM Genitori
GROUP BY genitore;

-- 5) Trovare il reddito delle persone che sono genitori di almeno 2 figli.

-- Non utilizzando raggruppamento

SELECT DISTINCT nome, reddito
FROM Persone, Genitori G1, Genitori G2
WHERE nome = G1.genitore AND nome = G2.genitore AND
      G1.figlio <> G2.figlio;

-- Utilizzando raggruppamento

SELECT nome, reddito
FROM Persone, Genitori
WHERE nome = genitore
GROUP BY nome, reddito
HAVING COUNT(figlio) >= 2;

