首先,你提的问题有些疑惑,你要d字段统级次数最多的前5个数据,照你这句话,查询出来的结果集应该是大于等于5行数据的.比如
select * from (
selct d,count(1) as top5 form t group by d order by top5 desc) a
where rownum<=5。查出的结果集可能为:
d top5
x 10
y 9
z 8
p 7
q 6
表示t.d=x的数据有10条,t.y=y的数据有9条。然后你是取出t.d=x的前5条,还是说把这40条记录全部取出来?
select a,b,c,d from t where t.d in (
select t2.d from (
select d, count(*) as top5 from t group by d order by top5 desc
) t2
)