DROP TABLE VESTITI;
DROP TABLE DISPONIBILITA;
DROP TABLE VENDITE;

CREATE TABLE VESTITI (
	VCod	 CHAR(6) NOT NULL PRIMARY KEY,
	Marca	 VARCHAR(20) NOT NULL,
	Descrizione VARCHAR(40) NOT NULL,
	Prezzo	 DEC(6,2) NOT NULL CHECK (Prezzo > 0)	);

CREATE TABLE DISPONIBILITA (
	TCID	 CHAR(8) NOT NULL PRIMARY KEY,
	VCod	 CHAR(6) NOT NULL REFERENCES VESTITI,
	Taglia	 CHAR(4) NOT NULL,
	Colore 	 VARCHAR(20) NOT NULL,
	NumDisponibili INT NOT NULL CHECK (NumDisponibili >= 0)		);

CREATE TABLE VENDITE (
	TCID	 CHAR(8) NOT NULL REFERENCES DISPONIBILITA,
	Data	 DATE NOT NULL,
	Numero	 INT NOT NULL CHECK (Numero > 0)	);


GRANT SELECT ON VESTITI TO PUBLIC;
GRANT SELECT ON DISPONIBILITA TO PUBLIC;
GRANT SELECT ON VENDITE TO PUBLIC;


-- 2.1
SELECT	VS.VCod, SUM(D.NumDisponibili) AS TotDisponibili
FROM	VESTITI VS, DISPONIBILITA D
WHERE	VS.Vcod = D.VCod
AND	EXISTS ( SELECT	*
		 FROM 	VENDITE VN
		 WHERE	YEAR(VN.DATA) = 2020
		 AND	VN.TCID = D.TCID )
GROUP BY VS.VCod;

-- 2.2
WITH TOT_INCASSI (VCod,Taglia,Colore,NumVendite) AS (
	SELECT 	 D.VCod,D.Taglia,D.Colore,SUM(VN.Numero)
	FROM	 DISPONIBILITA D, VENDITE VN
	WHERE	 D.TCID = VN.TCID
	AND	 YEAR(VN.Data) = 2019
	GROUP BY D.VCod,D.Taglia,D.Colore		)
SELECT T.*
FROM   TOT_INCASSI T
WHERE  T.NumVendite >= ALL ( SELECT T1.NumVendite
	      		     FROM   TOT_INCASSI T1
	      		     WHERE  T.VCod = T1.VCod    );

