Oracle的SQL高级技巧
来源:互联网 发布:手机国际象棋软件 编辑:程序博客网 时间:2024/06/08 06:17
作者:wallimn
电邮:wallimn@sohu.com
博客:http://wallimn.bokee.com
http://blog.csdn.net/wallimn
时间:2008-08-17
/***********本人原创,欢迎转载,转载请保留本人信息*************/
记录一些在开发过程中,费了些事或者走了些弯路才解决的问题。
希望能给网友带来些帮助。
1.关于层次查询
select * from employees start with employee_id =100 connected by proior employee_id=manager_id;
这种层次查询,相信大部分人都知道。但如何保持层次关系并进行排序呢?
Oracle有个关键字:SIBLINGS专门用来解决这个问题。
写法如下:order siblings by employee_id
这种排序,在层次查询与树形控件结合使用的时候尤其有用。
2.横向显示多个依据不同条件的进行统计的count()结果
如,统计每个部门的总人数、及男性数量及女性数量
我使用的原始方法是:
select count(*) ,(select count(*) from employees where sex='1') as male,(select count(*) from employees where sex='0') as female from employees group by dept_id
可以解决问题,但速度很慢。今天在网上看到一个好方法,记录如下:
select count(*) ,count(case when sex='1' then 1 else null end) as male,count(case when sex='0' then 1 else null end) as female from employees group by dept_id
很巧妙的使用了count的特性及case,很不错。
3.今天发现Oracle很特别
这个语句不能用:insert into mytab (select * from mytab_tmp order by id)
注:mytab表的写了个触发器,要求按顺序处理插入的数据。
害得我只好这样写:insert into mytab (select * from (select * from mytab_tmp order by id))
4.ROWNUM用法
select * from (select rownum row_id ,month,sell from (select month,sell from sale group by month,sell))
where row_id between 5 and 9
5.Oracle计算时间差的方法
总结了一下:
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小时:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分钟:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 60)
- Oracle的SQL高级技巧
- oracle高级sql的参考资料
- oracle高级sql的参考资料
- oracle高级sql的参考资料
- SQL高级查询的一些技巧
- Oracle高级技巧,高级查询
- SQL高级查询技巧
- SQL高级查询技巧
- SQL高级查询技巧
- SQL高级查询技巧
- SQL高级查询技巧
- SQL高级查询技巧
- Oracle的sql常用技巧
- 高级SQL @Oracle
- oracle 高级SQL查询
- Oracle 高级SQL
- Oracle/Sql 高级篇
- oracle SQL高级编程
- 最具原创性、想像力的十部电影
- Oracle常用的一些时间处理函数
- 男人必看的十部影片
- I LOVE CHINA
- 关于IE7.0的设置问题
- Oracle的SQL高级技巧
- 网线 - 网线
- 老外眼中最牛“中国元素”竟是两个汉字?
- 用命令查询一个机器是32位还是64位
- 请拒绝正版WINDOWS
- 体验服务性网站研究
- putty+screen+vim 远程编程环境配置
- 再谈贝塔斯曼:网络电子商务是否需要呼叫中心?
- 怎样联系美国买家?