【问题标题】:SQL Ranking by SumSQL 按 Sum 排序
【发布时间】:2020-08-16 05:59:05
【问题描述】:

我有以下项目的数据表:

Item#    Description      Company ID     Sales       
----------------------------------------------
1          wigit 1         521           500
2          wigit 2         521           700
1          wigit 1         663           200
2          wigit 2         663           300
3          wigit 3         521           300

我要做的是以一种格式提取数据,让我看到 wigit 1 在公司 521 的销售额中排名第一,但在我们销售给的整个公司阵容中,wigit 1 的销售额仅排名第 19在给定的时间段内。从这里我将向领导层提供一个 18 的销售差距数字,以查看公司可以使用哪些项目。

我想要从样本表中得到的结果是拉公司 521 与整个公司

Item #  Description  Company 521 Rank   Company 663 Rank Total Ranking      
----------------------------------------------------------------
1          wigit 1               2                2         3
2          wigit 2               1                1         2 
3          wigit 3               3                3         1

希望这有一定的意义,不确定是否可能与排名。结果将进入 Power BI

【问题讨论】:

  • 您想要的输出与样本数据不匹配。您可以编辑以清除预期的输出吗?
  • 改了,觉得可行。

标签: sql rank


【解决方案1】:

如果我理解正确,您可以在子查询中使用rank() 来获取公司排名。然后是外部聚合:

select Item#, Description,
       max(case when CompanyId = 521 then seqnum_c end) desc) as rank_521,
       max(case when CompanyId = 663 then seqnum_c end) desc) as rank_663,
       rank() over (order by sum(sales) desc) as overall_rank
from (select t.*,
             rank() over (partition by coompanyid order by sales desc) as seqnum_c
      from t
     ) t
group by Item#, Description

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多