Per comprendere la query con al suo interno la subquery si possono implementare le singole operazioni in SQL al fine di ottenere il medesimo risultato finale.
Ad esempio partendo dalla tabella iniziale
Tabella_Risultati_Vendita |
---|
Numero_Registrazione | Codice_Prodotto | Quantità |
---|
1101 | 101 | 1100 |
1101 | 102 | 300 |
1102 | 103 | 1700 |
1103 | 104 | 500 |
1104 | 101 | 2500 |
1105 | 103 | 2000 |
1105 | 104 | 700 |
Si determina la media della Quantità venduta per ciascun Codice_ Prodotto, con una query similare:
SELECT Risultati_Vendita.Codice_Prodotto, Avg(Risultati_Vendita.Quantità) AS MediaDiQuantità
FROM Risultati_Vendita
GROUP BY Risultati_Vendita.Codice_Prodotto;
che denominiamo QueryCalcoloMedia e si ottengono i seguenti valori della media (i quali corrispondono al processo svolto dalla subquery).
QueryCalcoloMedia |
---|
Codice_Prodotto | MediaDiQuantità |
---|
101 | 1800 |
102 | 300 |
103 | 1850 |
104 | 600 |
Dopodiché, per conoscere quali prodotti nelle vendite hanno una Quantità maggiore della sua media è sufficiente mettere in relazione (JOIN) la tabella iniziale con la query precedente.
SELECT Risultati_Vendita.Codice_Prodotto, Risultati_Vendita.Quantità, QueryCalcoloMedia.MediaDiQuantità
FROM Risultati_Vendita INNER JOIN QueryCalcoloMedia ON Risultati_Vendita.Codice_Prodotto = QueryCalcoloMedia.Codice_Prodotto
WHERE (((Risultati_Vendita.Quantità)>[QueryCalcoloMedia]![MediaDiQuantità]));
Il cui risultato finale è:
QueryQuantitàMaggiore Media |
---|
Codice_Prodotto | Quantità | MediaDiQuantità |
---|
101 | 2500 | 1800 |
103 | 2000 | 1850 |
104 | 700 | 600 |
Ove si può notare, nel Venduto, di ciascun Codice_Prodotto, la Quantità maggiore della sua media, che corrisponde ai dati estratti all’originaria query e subquery del post in oggetto.