首页 > 解决方案 > 找出每位员工销售最多的产品

问题描述

我试图找出每个员工销售最多的产品(最喜欢的产品是什么)。

我有三个表,销售(有数量、价格和产品列)、产品和员工,我知道这可以通过使用聚合来完成,但无法弄清楚逻辑。这是我到目前为止所拥有的:

SELECT
    E.EmployeeID,
    FirstName,
    ProductID,
    SUM(Quantity) AS S,
    MAX(Quantity) AS M
FROM    
    tbl_Employees AS E
INNER JOIN
    tbl_Sales AS S ON E.EmployeeID = S.EmployeeID
GROUP BY
    ProductID, E.EmployeeID, FirstName

任何帮助将不胜感激。

标签: sqlaggregate-functions

解决方案


您通常会使用 ANSI 标准窗口函数来执行此操作:

select s.*
from (select s.EmployeeID, s.ProductId, sum(s.quantity) as quantity,
             row_number() over (partition by s.EmployeeID order by sum(s.quantity) desc) as seqnum
      from tbl_sales s
      group by s.EmployeeID, s.ProductId
     ) s
where seqnum = 1;

推荐阅读