最近用的的几个Oracle sql语句

1. 对于有上下级关系的数据的树形结构的读取

    比如: table A: id,name,parentid

    那么已知id=999的,需要找到

  1) 所有下级节点(包含自己)

      select  level,id from A start with id=999 connect by prior id=parentid

  2)  所有上级节点

        select level,id from A start with id=999 connect by prior parentid=id

  根据level还可以选取处于某一特定深度的节点

 

2. join

    table A :id ,date(yyyymmdd),sum(截止到当前的汇总)

    需要根据某一日选取当日数据

  select (a.sum-b.sum) as sum, a.date as date from 

   (select  id,date,sum from A) a

    left outer join

   (select id, to_char(to_date(date,'yyyymmdd')+1,'yyyymmdd') as nextdate ,sum from A) b

   on a.date=b.nextdate and a.id=b.id

 

  开发的时候没有使用left outer join,发现数据有丢失现象。因为可能有些数据是没有昨日记录的。

 如果用inner join,会丢失数据。

 

3. 查看数据库占用cpu高的sql语句

   top 找出当前占用cpu高的pid

  select c.sql_text from v$process a ,v$session b,v$sqltext c where a.spid=$pid$

 and a.addr=b.paddr and b.sql_hashvalue=c.hash_value 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值