【发布时间】:2020-08-07 19:27:22
【问题描述】:
我正在尝试对数据集进行分类,其中前 3 名记录计数的描述类别将汇总为前 3 名,而所有其他类别将计入“其他”类别(我这样做是为了SSRS 报告)。我使用窗口函数来组织每个类别,但我很难创建最终结果。
declare @t table(id int, description varchar(50))
insert into @t values(123, 'Cardiac'),
(124, 'Cardiac'),
(125, 'Cardiac'),
(126, 'Cardiac'),
(222, 'Digestive'),
(223, 'Digestive'),
(224, 'Digestive'),
(225, 'Digestive'),
(226, 'Digestive'),
(333, 'Muscular'),
(334, 'Muscular'),
(335, 'Muscular'),
(336, 'Muscular'),
(444, 'Nose'),
(445, 'Nose'),
(446, 'Nose'),
(447, 'Nose'),
(448, 'Nose'),
(449, 'Nose'),
(555, 'Ear'),
(555, 'Ear'),
(666, 'Mouth')
到目前为止我已经写了这个:
select *, row_number()over(partition by description order by id) as ranks
from @t
group by id, description
我想要的结果是这样的:
Description Count
Nose 6
Digestive 5
Cardiac 4
Muscular 4
Other 3
我认为它涉及使用带有 count() 的窗口函数,但我似乎无法弄清楚。
【问题讨论】:
标签: sql sql-server