我正在嘗試編寫查詢以查找店鋪中的最高銷售人員並嘗試顯示員工姓名,他/她所在的商店以及銷售額。我只想輸出銷售數量最多的員工,我的查詢輸出所有員工的數字。如何在SQL中使用max函數
SELECT empnin, shopname, SUM(Rentalrate) AS Sales
FROM frs_FilmRental
NATURAL JOIN frs_Shop
GROUP BY empnin
這是下面的結果我用我的查詢得到:
我正在嘗試編寫查詢以查找店鋪中的最高銷售人員並嘗試顯示員工姓名,他/她所在的商店以及銷售額。我只想輸出銷售數量最多的員工,我的查詢輸出所有員工的數字。如何在SQL中使用max函數
SELECT empnin, shopname, SUM(Rentalrate) AS Sales
FROM frs_FilmRental
NATURAL JOIN frs_Shop
GROUP BY empnin
這是下面的結果我用我的查詢得到:
I如果你想要每個商店的最高銷售人員,那麼你需要過濾。這最好在WHERE
條款中完成。
在MySQL中,這種類型的查詢其實是最容易實現的使用變量:
select fs.*
from (select fs.*,
(@rn := if(@s = shopname, @rn + 1,
if(@s := shopname, 1, 1)
)
) as rn
from (select fr.empnin, s.shopname, SUM(fr.Rentalrate) AS Sales
from frs_FilmRental fr join
frs_Shop s
using (??) -- add the appropriate column here
group by empnin
) fs cross join
(select @rn := 0, @s := '') params
order by shopname, sales desc
) fs
where rn = 1;
另外,不要使用natural join
。這是一個等待發生的錯誤,因爲它隱藏了用於連接的鍵,並且一些意外的列可能最終被使用。
在這裏,像這樣:
SELECT top 10 empnin, min(shopname) as Shopname, SUM(Rentalrate) AS Sales
FROM frs_FilmRental
NATURAL JOIN frs_Shop
GROUP BY empnin
order by sum(Rentalrate) desc
SELECT TOP 1 empnin, shopname, SUM(Rentalrate) AS Sales
FROM frs_FilmRental
NATURAL JOIN frs_Shop
GROUP BY empnin ORDER BY Sales
試試上面的SQL Server