You can use the
WITH
- Common Table Expression with
ROW_NUMBER
function for this.
first you have to create a CTE with row number. then it works like following table
empid ename MostProfitable_SalesPerson ROWNUMBER
13 alferd 1500 1
34 kevin 1300 2
3 syard 1100 3
Then you can select the top most profitable record by rownumber = 1
and 2nd Most rownumber=2 etc ..
WITH MostProfitable_SalesPersons(empid,ename,MostProfitable_SalesPerson,ROWNUMBER) AS (
SELECT Salespersons.empid, Salespersons.ename,
(SUM(ORDERITEMS.qty*INVENTORY.price) - SALESPERSONS.salary) AS 'MostProfitable_SalesPerson',
ROW_NUMBER() OVER(ORDER BY SUM(ORDERITEMS.qty*INVENTORY.price) - SALESPERSONS.salary DESC)
FROM Inventory INNER JOIN
OrderItems ON Inventory.partid = OrderItems.partid INNER JOIN
Orders ON OrderItems.orderid = Orders.orderid INNER JOIN
Salespersons ON Orders.empid = Salespersons.empid
GROUP BY Salespersons.empid, Salespersons.ename,SALESPERSONS.salary )
SELECT empid,ename,MostProfitable_SalesPerson
FROM MostProfitable_SalesPersons
WHERE ROWNUMBER=1