


USE magazzino2;

# Conta quanti fornitori ci sono
SELECT COUNT(*)AS Numero_Fornitori FROM Fornitori;

# Conta quanti fornitori forniscono bulloni
SELECT COUNT(*) AS Numero_Fornitori_Bulloni FROM
Magazzino INNER JOIN
(Fornitori INNER JOIN Acquisti ON Fornitori.Id_fornitore = Acquisti.Id_fornitore)
ON Magazzino.Id_Articolo = Acquisti.Id_Articolo
WHERE Magazzino.Descrizione = 'Bulloni';

# Calcola gli acquisti (come numero di pezzi) totali di bulloni
SELECT SUM(NPezzi) FROM
Magazzino INNER JOIN
(Fornitori INNER JOIN Acquisti ON Fornitori.Id_fornitore = Acquisti.Id_fornitore)
ON Magazzino.Id_Articolo = Acquisti.Id_Articolo
WHERE Magazzino.Descrizione = 'Bulloni';

# Calcola le vendite (come numero di pezzi) totali di bulloni
SELECT SUM(NPezzi) FROM
Magazzino INNER JOIN
(Clienti INNER JOIN Vendite ON Clienti.Id_cliente = Vendite.Id_cliente)
ON Magazzino.Id_Articolo = Vendite.Id_Articolo
WHERE Magazzino.Descrizione = 'Bulloni';

# calcola i pezzi disponibili a magazzino
SELECT
((SELECT SUM(NPezzi) FROM
Magazzino INNER JOIN
(Fornitori INNER JOIN Acquisti ON Fornitori.Id_fornitore = Acquisti.Id_fornitore)
ON Magazzino.Id_Articolo = Acquisti.Id_Articolo
WHERE Magazzino.Descrizione = 'Bulloni')
-
(SELECT SUM(NPezzi) FROM
Magazzino INNER JOIN
(Clienti INNER JOIN Vendite ON Clienti.Id_cliente = Vendite.Id_cliente)
ON Magazzino.Id_Articolo = Vendite.Id_Articolo
WHERE Magazzino.Descrizione = 'Bulloni')) AS Bulloni_Rimasti;

# Numero di operazioni di acquisto precedenti alla data del primo gennaio 2007 (1/1/2007)
SELECT COUNT(*) FROM
(Fornitori INNER JOIN Acquisti ON Fornitori.Id_fornitore = Acquisti.Id_fornitore)
WHERE DataAcquisto < '2007-01-01'

# Numero medio di pezzi acquistati
SELECT SUM(NPezzi) / COUNT(*) FROM Acquisti;

# La stessa query usando la funzione AVG
SELECT AVG(NPezzi) FROM Acquisti;

# Numero di vendite raggruppati per clienti
SELECT Nome_Cli, Cognome_Cli, COUNT(*) AS Numero_Acquisti FROM
(Clienti INNER JOIN Vendite ON Clienti.Id_cliente = Vendite.Id_cliente)
GROUP BY Clienti.Id_Cliente



