如何在 SQL 中使用 max 函数
How to use max function in SQL
我正在尝试编写查询以查找商店中的顶级销售人员,并尝试显示员工姓名、雇用 he/she 的商店以及销售额。我只想输出目前销售额最高的员工,我的查询输出所有员工及其数字。
SELECT empnin, shopname, SUM( Rentalrate ) AS Sales
FROM frs_FilmRental
NATURAL JOIN frs_Shop
GROUP BY empnin
这是我通过查询获得的以下结果:
在这里,像这样:
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 服务器尝试上述方法
如果您想要每个店铺的顶级销售人员,那么您需要进行过滤。这最好在 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
。这是一个等待发生的错误,因为它隐藏了用于连接的键,并且最终可能会使用一些意外的列。
我正在尝试编写查询以查找商店中的顶级销售人员,并尝试显示员工姓名、雇用 he/she 的商店以及销售额。我只想输出目前销售额最高的员工,我的查询输出所有员工及其数字。
SELECT empnin, shopname, SUM( Rentalrate ) AS Sales
FROM frs_FilmRental
NATURAL JOIN frs_Shop
GROUP BY empnin
这是我通过查询获得的以下结果:
在这里,像这样:
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 服务器尝试上述方法
如果您想要每个店铺的顶级销售人员,那么您需要进行过滤。这最好在 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
。这是一个等待发生的错误,因为它隐藏了用于连接的键,并且最终可能会使用一些意外的列。