我正在汇总数据而我无法对某些列进行求和,因此我希望从该列或模式值中进行最频繁的观察。每个ID只能有一个站点和号码,所以如果有联系,则选择两个号码中较小的一个。
示例如下:
ID site number
1 3 45
1 3 45
1 2 56
1 3 56
2 4 5
2 5 5
2 5 3
2 5 5
我希望它看起来像:
ID site number
1 3 45
2 5 5
答案 0 :(得分:0)
这是一种方法:
with aggregation as
(
select id
, site
, number
, numberCount = count(1)
from SiteNumbers
group by id
, site
, number
), aggregateRanks as
(
select *
, idRank = row_number() over (partition by id order by numberCount desc, number, site)
from aggregation
)
select id
, site
, number
from aggregateRanks
where idRank = 1
它符合您的结果,但根据您的所有不同情况,可能需要进行一些调整;希望它能给你一些想法。