sql - 找出每位员工销售最多的产品
问题描述
我试图找出每个员工销售最多的产品(最喜欢的产品是什么)。
我有三个表,销售(有数量、价格和产品列)、产品和员工,我知道这可以通过使用聚合来完成,但无法弄清楚逻辑。这是我到目前为止所拥有的:
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
任何帮助将不胜感激。
解决方案
您通常会使用 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;
推荐阅读
- django - 我如何将我的创建新帖子 url 与详细视图和列表视图集成在一起,以便用户可以像 facebook 一样在同一页面上创建新帖子
- php - PHP:list() 以字符串形式动态设置变量(以格式化顺序读取任何 CSV 文件)
- r - R markdown 不能编织
- api - 是否可以通过 XPM / Workflowmax API 获得工作预算数据?
- c - 在C中使用空终止字符作为空指针
- php - 我尝试在 pdo 中使用多查询插入两个表,但它给出了这个致命错误:未捕获的错误:调用未定义的方法 PDO::multi_query()
- javascript - 调用未定义对象的原型函数
- java - 为什么实现Autoclosable接口的类的close方法比Sql连接close先调用?
- python - 在 ubuntu 21 中安装时 anaconda 3 缩放错误
- c# - 为基类方法创建的委托实际上可以调用派生类方法吗?