oracle sql语句相关问题,分组后查询。

2025-01-26 15:52:22
推荐回答(2个)
回答1:

首先,你提的问题有些疑惑,你要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条记录全部取出来?

回答2:

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

)