【问题标题】:How to check in which category each employee has sold the most goods? I can display only employee's name and sold goods如何查看每个员工在哪个类别中销售的商品最多?我只能显示员工的姓名和销售的商品
【发布时间】:2021-03-04 17:36:50
【问题描述】:

整张桌子

USE Northwind
SELECT MAX(TotalOrder)


FROM vwEmployesAndMostSoldCategories
GROUP MAX(TotalOrder)

我只能输出什么

USE Northwind
SELECT
   FullName
   , MAX(TotalOrder) AS TheMaxSoldUnits
FROM vwEmployesAndMostSoldCategories
GROUP BY FullName

【问题讨论】:

    标签: sql sql-server-2008 mssql-jdbc


    【解决方案1】:

    您可以在此处使用TOP 查询:

    WITH cte AS (
        SELECT FullName, CatgegoryName,
               SUM(TotalOrder) AS SumTotalOrder,
               ROW_NUMBER() OVER (PARTITION BY FullName
                                  ORDER BY SUM(TotalOrder) DESC) rn
        FROM vwEmployesAndMostSoldCategories
        GROUP BY FullName, CategoryName
    )
    
    SELECT FullName, CategoryName, SumTotalOrder AS TotalOrder
    FROM cte
    WHERE rn = 1;
    

    如果给定的员工可能并列有两个或多个类别的订单总数相同,并且您希望显示所有并列,则将 ROW_NUMBER 替换为 RANK。 p>

    【讨论】:

    • 对不起,我问错问题了。我需要找出每个员工在哪个类别中销售的商品最多。不知道为什么我不能输出一个employee+Category+TotalUnits的3列,
    • @AlexeyOrel ... 经验教训,请始终在您的 SQL 问题中显示开始和结束数据。无论如何,我已经更新了我将您的问题解释为实际要问的内容。
    • 老兄!你帮了我很多!这是我对这个传奇网站的第一条评论 =) 祝你一切顺利!
    【解决方案2】:

    如果我没听错的话,你可以使用with ties

    select top (1) with ties e.*
    from vwEmployesAndMostSoldCategories e
    order by rank() over(partition by fullname order by totalorders desc)
    

    对于每个员工,这将返回具有最大 totalorders 的行(如果存在最高平局,则返回同一员工的所有平局行)。看来您不需要在这里进行聚合。

    【讨论】:

    • @GMB 你能告诉我在这种情况下“e”是什么意思吗?我试过你的建议,但对我来说,它不起作用
    • @AlexeyOrel: e 是查询中vwEmployesAndMostSoldCategories 的别名。您获得此查询的结果有什么问题?
    • Msg 208,级别 16,状态 1,第 1 行无效的对象名称“vwEmployesAndMostSoldCategories”。不知道如何运行此查询,好像缺少某些内容。您知道如何在没有别名的情况下编写此查询吗?我已经开始学习 SQL 一个月了,所以这个别名让我很困惑。
    • @AlexeyOrel:按原样运行查询。它不会引发该错误。
    • 我已经尝试过了,但我得到一个错误,不知道为什么:无效的对象名称'vwEmployesAndMostSoldCategories'
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2019-12-03
    • 2017-10-22
    相关资源
    最近更新 更多