Hello Community,
I have two SQL Scripts that both produce the exact same results. One script uses a subquery, while the other script uses straightforward SQL code.
The following is the sql script using subquery - it is taken from the book called 'Query Answers with SQL Server: Volume 2: In-Depth Querying.
SELECT MK.MakeName
,COUNT(MK.MakeName) AS VehiclesSold
,SUM(SD.SalePrice) AS TotalSalesPerMake
FROM Data.Make AS MK
INNER JOIN Data.Model AS MD ON MK.MakeID = MD.MakeID
INNER JOIN Data.Stock AS ST ON ST.ModelID = MD.ModelID
INNER JOIN Data.SalesDetails SD ON ST.StockCode = SD.StockID
WHERE MakeName IN (
SELECT TOP (3) MK.MakeName
FROM Data.Make AS MK
INNER JOIN Data.Model AS MD
ON MK.MakeID = MD.MakeID
INNER JOIN Data.Stock AS ST
ON ST.ModelID = MD.ModelID
INNER JOIN Data.SalesDetails SD
ON ST.StockCode = SD.StockID
INNER JOIN Data.Sales AS SA
ON SA.SalesID = SD.SalesID
GROUP BY MK.MakeName
ORDER BY COUNT(MK.MakeName) DESC
)
GROUP BY MK.MakeName
ORDER BY VehiclesSold DESC
The following is my script which produces the same results:
SELECT TOP 3
Make.MakeName
,COUNT(Make.MakeName) AS VehiclesSold
,SUM(SalesDetails.SalePrice) AS TotalSalesPerMake
FROM Data.Make
INNER JOIN Data.Model
ON Make.MakeID = Model.MakeID
INNER JOIN Data.Stock
ON Model.ModelID = Stock.ModelID
INNER JOIN Data.SalesDetails
ON Stock.StockCode = SalesDetails.StockID
INNER JOIN Data.Sales
ON SalesDetails.SalesID = Sales.SalesID
GROUP BY Make.MakeName
ORDER BY VehiclesSold DESC
My question is why did the author use subquery to produce a result, which clearly doesn't need a subquery
The results appears as follows: