SQL 分析函数over partition 分组数据后取前N条
将 ATable 表,如下
A B C
aa sx 1000
aa zh 900
bb jj 1100
bb zh 500
bb gg 400
bb wd 300
bb sh 150
cc sh 1500
转换为BTable表,如下
A B C
aa sx 1000
aa zh 900
bb jj 1100
bb zh 500
bb gg 400
cc sh 1500
即不满三条的数据,全部取出,超过3条的数据,取三条,后面滤去
select t.* from
(select Atable.*,row_number() over(partition by A order by C desc) rn from Atable) t
where rn<=3