oracle top用法
来源:互联网 发布:dailyview网络温度计 编辑:程序博客网 时间:2024/05/18 03:49
ROWNUM 是查询之后产生的编号,比查询滞后,所以如果用大于号,则会一条一条数据全部都过滤掉。
SELECT * FROM torderdetail a WHERE ROWNUM <= 10SELECT * FROM (SELECT a.*, ROWNUM rn FROM torderdetail a) WHERE rn >= 10 AND rn <= 20
Row_number() over()这个分析函数是从9I开始提供的,一般的用途和rownum差不多。
一般写法row_number() over( order by order_date desc) 生成的顺序和rownum的语句一样,效率也一样(对于同样有order by 的rownum语句来说),所以在这种情况下两种用法是一样的。
而对于分组后取最近的10条纪录,则是rownum无法实现的,这时只有row_number可以实现,row_number() over(partition by 分组字段 order by 排序字段)就能实现分组后编号,比如说要取近一个月的每天最后10个订单纪录
SELECT *
FROM (
SELECT a.*,ROW_NUMBER () OVER (PARTITION BY TRUNC (order_date) ORDER BY order_date DESC) rn
FROM torderdetail a)
WHERE rn <= 10
分组top:
如果只想得到每个公司最大年份,最大月份数据。(猜测你的需求)
partition by unitname order by year desc,period desc
partition分组函数year,period desc与year desc,period desc 不一样
如果用year,period desc不行,但是分别year desc,period desc 就搞定了,谢谢。
下面是完整的代码
select *
from (select UNITCODE, unitname, year, period, num1,
row_number() over(partition by UNITNAME order by YEAR desc,period desc) mm
from (select BD_CORP.UNITCODE, bd_corp.unitname, gl_voucher.year, gl_voucher.period, count(*) num1
from gl_voucher, bd_corp
where bd_corp.pk_corp = gl_voucher.pk_corp
and gl_voucher.dr='0'
group by BD_CORP.UNITCODE,
bd_corp.unitname,
gl_voucher.year,
gl_voucher.period)
)
where mm = 1
ORDER BY UNITCODE;
- oracle top用法
- Oracle 查询类似 select top 的用法
- TOP用法
- TOP用法
- Oracle TOP
- Mysql limit分页语句用法 SqlServer TOP子句 Oracle分页
- TOP n [PERCENT]用法
- select top 的用法
- top with ties用法
- top with ties用法
- HP-UX TOP用法
- top with ties用法
- mysql中top用法
- Linux Top用法
- select top 用法
- mysql中top用法
- adb shell top用法
- top命令的用法
- 2016总结
- 写出一个小程序,求出100-200之间的质数的个数并输出这些数
- http://blog.csdn.net/qq_24451605/article/details/44102963 hdu 4035经典概率dp求期望
- android中活动、服务之间传值简单总结笔记
- 资源网解压密码
- oracle top用法
- 【NOIP2014八校联考第2场第2试9.28】单词接龙
- 用canvas实现围绕旋转动画
- 探究MFC之Dialog窗口最大化时控件自适应
- Vector源码分析
- 【SCOI2016】幸运数字 题解 + 线性基介绍
- PAT-B 1057. 数零壹
- 公司年会抽奖的一个java实现
- 程序人生(二)汉语拼音之父周有光去世——一个播音专业安卓程序员有感