[英]Ranking at Multiple Levels on SQL Server
我已经阅读了几种执行此操作的方法,但它似乎对我不起作用。 我正在尝试提取具有类别、商品代码和销售额的数据。 我总结了一段时间,所以我的基本查询如下所示:
select
Category
, Itemcode
, sum(Sales)
, rank() over (partition by Category order by sum(Sales) desc) as ItemRank
from
Sales
group by
Category, Itemcode
当我这样做时,我的数据如下所示:
我想做的是添加另一个排名,以显示整个类别的排名。
是这样的:
添加后的查询会是什么样子? 我已经尝试了几件事,但我似乎无法让它发挥作用。
在这里猜测一下,但我知道你想根据 TotalSales 进行排名? 如果是这样,您可以加入子查询进行聚合,然后在另一个排名列中使用它:
declare @Sales table (Category varchar(25), ItemCode int, Sales int)
insert into @Sales
values
('Category A', 123, 100),
('Category A', 234, 125),
('Category A', 345, 97),
('Category B', 456, 354),
('Category B', 567, 85),
('Category B', 678, 112)
select
s.Category
, Itemcode
, sum(s.Sales)
, rank() over (partition by s.Category order by sum(Sales) desc) as ItemRank
, dense_rank() over (order by sum(TotalSales) desc) as CategoryRank
from @Sales s
join ( select Category, sum(Sales) as TotalSales
from @Sales
group by Category
) d
on s.Category = d.Category
group by s.Category, Itemcode
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.