我将销售表分为两类:邮政编码和服务类型
ZIPCode ServiceID SalePrice
47103 1 10.43
47103 2 8.41
41703 2 52.12
41703 2 13.31
69047 1 5.23
69047 1 14.62
69047 2 51.62
90210 2 85.31
我希望将其转换为一个表格,为每个邮政编码提供销售额最高的服务ID以及所述销售数量:
ZIPCode ServiceID NumSales
47103 2 3
69047 1 2
90210 2 1
我想我可以找到一种方法来使用联接和多个查询来执行此操作,但是有一种方法我可以在邮政编码上运行GROUP BY
并检索与之对应的服务ID最高COUNT
?
顺便说一下,我正在运行Microsoft SQL Server。
答案 0 :(得分:2)
使用row_number()
:
select t.*
from (select zipcode, serviceid, sum(sales) as sales
row_number() over (partition by zipcode order by sum(sales) desc) as seqnum
from t
group by zipcode, serviceid
) t
where seqnum = 1;
如果您想要关联,请使用rank()
或dense_rank()
代替row_number()
。