Oracle里面范围怎么选,在Oracle SQL /分页中选择结果的范围(限制)

假设我们有下表:

CREATE TABLE "ARTICLE_COUNTER_STATISTICS_M"

(

"ID" NUMBER(19,0) NOT NULL ENABLE,

"ITEMCOUNT" NUMBER(19,0),

"VERSION" TIMESTAMP (6) DEFAULT SYSTIMESTAMP

)

唯一约束是ID和VERSION字段.

可能在DB中的某些行的示例(时间戳对于所有记录始终相同):

1374659422641 22 2014.02.26 09:45:01,000000000

1387797258001 7 2014.02.26 09:45:01,000000000

1387796687862 1 2014.02.26 09:45:01,000000000

1387800521317 1 2014.02.26 09:45:01,000000000

现在,如果我们想要选择ID,itemcount并按itemcount对它们进行排序,我们将执行以下操作:

SELECT id, SUM(itemcount) as count, version

FROM ARTICLE_COUNTER_STATISTICS_m

WHERE id != '0'

GROUP BY id, version

ORDER BY version DESC, SUM(itemcount) DESC

但是目前还不清楚的是,我们如何仅在一定范围内选择结果.例如10至20项最重要的项目?我试过这样的事情:

SELECT id, count, version FROM(

SELECT id, SUM(itemcount) as count, version

FROM ARTICLE_COUNTER_STATISTICS_m

WHERE id != '0'

GROUP BY id, version

ORDER BY version DESC, SUM(itemcount) DESC

) where rownum >= 0 and rownum <= 20

但是,如果“rownum> = n”中的n大于1(它只返回空结果),则无效.我知道可能必须使用ROW_NUMBER()函数来实现目标,但我无法让它工作.有任何想法吗?谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值