如何在SQL中使用max函数

问题描述:

我正在尝试编写查询以查找店铺中的最高销售人员并尝试显示员工姓名,他/她所在的商店以及销售额。我只想输出销售数量最多的员工,我的查询输出所有员工的数字。如何在SQL中使用max函数

SELECT empnin, shopname, SUM(Rentalrate) AS Sales 
FROM frs_FilmRental 
NATURAL JOIN frs_Shop 
GROUP BY empnin 

这是下面的结果我用我的查询得到:

Results

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