DROP TABLE NEGOZI;
DROP TABLE PRODOTTI;
DROP TABLE VENDITE;

CREATE TABLE NEGOZI (
	NID CHAR(5) NOT NULL PRIMARY KEY,
	INDIRIZZO VARCHAR(30) NOT NULL,
	COMUNE VARCHAR(30) NOT NULL	);

CREATE TABLE PRODOTTI (
	CODP CHAR(5) NOT NULL PRIMARY KEY,
	DESCRIZIONE VARCHAR(30) NOT NULL,
	PREZZO DEC(6,2) NOT NULL CHECK (PREZZO > 0)	);

CREATE TABLE VENDITE(
	NID CHAR(5) NOT NULL REFERENCES NEGOZI,
	CODP CHAR(5) NOT NULL REFERENCES PRODOTTI,
	MESE SMALLINT NOT NULL CHECK (MESE BETWEEN 1 AND 12),
	NUMVENDUTI INT NOT NULL CHECK (NUMVENDUTI > 0),
	PRIMARY KEY (NID,CODP,MESE)				);


INSERT INTO NEGOZI VALUES
('N0001','Via Roma, 25','Bologna'),
('N0002','Piazza Galilei, 3','Bologna'),
('N0003','Via Verdi, 17','Cesena');


INSERT INTO PRODOTTI VALUES
('P0998','TV LCD 40',150.00),
('P0999','TV LCD 42',230.00),

('P1000','SMART TV LCD 50',500.00),
('P1001','SMART TV LCD 65',900.00),

('P1102','SISTEMA HOME THEATRE',250.00),
('P1103','SISTEMA HOME THEATRE TOP',750.00),

('P2004','LETTORE 3D BLU-RAY XYZ',150.00),
('P3005','OCCHIALI 3D WZH (1 PAIO)',20.00)
;


INSERT INTO VENDITE VALUES
('N0001','P0998',1,300),
('N0001','P0999',1,450),
('N0001','P1000',1,300),
('N0001','P1000',2,700),
('N0001','P1001',2,1200),

('N0002','P0999',1,600),
('N0002','P1000',1,150),
('N0002','P1001',1,1400),
('N0002','P1102',2,650),
('N0002','P1103',2,1300),
('N0002','P1001',3,800),

('N0003','P0999',1,300),
('N0003','P1001',2,600),
('N0003','P1103',2,150);


GRANT SELECT ON TABLE NEGOZI TO PUBLIC;
GRANT SELECT ON TABLE PRODOTTI TO PUBLIC;
GRANT SELECT ON TABLE VENDITE TO PUBLIC;


-- 2.1
SELECT 	DISTINCT V.Mese,V.NID
FROM   	PRODOTTI P, VENDITE V
WHERE	V.CodP = P.CodP
AND	P.PRezzo*V.NumVenduti > 500000
ORDER BY V.Mese;



-- 2.2
WITH INCASSIMESE (CodP, Mese) AS (
	SELECT 	DISTINCT V.CodP, V.Mese 
	FROM	PRODOTTI P, VENDITE V 
	WHERE	V.CodP = P.CodP
	and	P.Prezzo*V.NumVenduti > 100000	)

SELECT 	I.CodP, COUNT(*) AS NumMesi
FROM	INCASSIMESE I 
GROUP BY I.CodP;
