分组查询不应该用group by吧,应该是order by
----->
select MOD(ROWNUM-1,a.cnt)+1,a.*
from
(
select t.nameid ,data,count(*) over(partition by t.nameid ) cnt
from add_mst t
order by nameid ,data desc '分组,时间最新
) a
where MOD(ROWNUM-1,a.cnt)+1<=10
order by nameid ,MOD(ROWNUM-1,a.cnt)+1
----->
select MOD(ROWNUM-1,a.cnt)+1,a.*
from
(
select t.nameid ,data,count(*) over(partition by t.nameid ) cnt
from add_mst t
order by nameid ,data desc '分组,时间最新
) a
where MOD(ROWNUM-1,a.cnt)+1<=10
order by nameid ,MOD(ROWNUM-1,a.cnt)+1
解决方案 »
- oracle 取最近一天数据
- 使用pl/sql导出表的时候,有blob字段无法导出导入
- 初学者的问题(急):ejb3通过jndi连接oracle10g数据库出现的问题。
- 现在想实现数据库双向同步,不知道怎么弄,小弟在些有礼了,还望多多赐教....
- 我的表空间满了,每次设置无限制单都不成功,怎么设置????(内有贴图)
- 急求一oracle函数!源码
- 高分询问低能问题_在先等待
- 请问:删除表中的记录,为什么表空间的占用率没有变化?
- 急呀!!!!有关oracleservice启动的问题
- oracle 用户自动被锁 解锁后能够正常使用,求大神赐教啊。
- 求PowerDesigner教程
- Oracle菜鸟问题(关于登录Sql*Plus)
select b.*
from
(
select MOD(ROWNUM-1,a.cnt)+1 cnt2,a.*
from
(
select nameid ,data,count(*) over(partition by nameid ) cnt
from add_mst
order by nameid ,data desc '分组,时间最新
) a
order by nameid ,MOD(ROWNUM-1,a.cnt)+1
) b
where b.cnt2<=10
from
(
select nameid ,data,count(*) over(partition by nameid order by data desc) rn
from add_mst
)
where rn<=10
(
select
t.*,
dense_rank() over(partition by t.nameid order by t.data desc) rank
from
table1 t
) s
where s.rank<=10;
就是在access中,分组取出每一组的top n(时间最新10条)。
本来以为很简单,用group by 加上order by和top 10 组合就能解决,后来查阅group by文档,其使用有很多限制,问题实现挺难的。求大人解决
---------- ---------- ----------
1 b 111
2 c 111
1 b 1
1 a 10
1 a 10
4 a 10
4 a 10
4 a 10
4 a 90
1 a 250
2 a 5 ID USERID WEI
---------- ---------- ----------
3 a 60
1 a 1
1 a 1
4 a 10
1 a 1
1 a 1
1 a 1
1 a 1已选择19行。SQL> select * from (select id,userid,wei,row_number() over(partition by id order
by wei) t from b) where t<4; ID USERID WEI T
---------- ---------- ---------- ----------
1 b 1 1
1 a 1 2
1 a 1 3
2 a 5 1
2 c 111 2
3 a 60 1
4 a 10 1
4 a 10 2
4 a 10 3已选择9行。SQL>
select *
from mytable as a
where data in(select top 10 data from mytable where nameid=a.nameid order by data)