Oracle笔记--WITH AS 用法
2017-03-14 16:23
459 查看
读《Oracle 查询优化改写技巧与案例》笔记
语法
with tempName as (select ....)
select ...
易读,多次调用效率也高
1.统计当年星期一,星期二...星期日各有多少天
with x0 as
(select trunc(sysdate,'yyyy') btime from dual),
x1 as
(select btime,add_months(btime,12) etime from x0),
x2 as
(select btime,etime,etime-btime day_num from x1),
x3 as
(select btime+(level-1) as dtime from x2 connect by level <= day_num),
x4 as
(select dtime,to_char(dtime,'dy') dy from x3)
select dy,count(*) from x4 group by dy
2.统计当年每个月的天数
with x0 as
(select trunc(sysdate,'yyyy') btime,add_months(trunc(sysdate,'yyyy'),12) from dual)
select add_months(btime,level-1) yyyymm,add_months(btime,level)-add_months(btime,level-1) days
from x0 connect by level<=12
相同SQL
select
to_char(add_months(trunc(sysdate,'yyyy'),level-1),'yyyymm') year_month,
last_day(add_months(trunc(sysdate,'yyyy'),level-1))-add_months(trunc(sysdate,'yyyy'),level-1)+1 days
from dual connect by level<=12
语法
with tempName as (select ....)
select ...
易读,多次调用效率也高
1.统计当年星期一,星期二...星期日各有多少天
with x0 as
(select trunc(sysdate,'yyyy') btime from dual),
x1 as
(select btime,add_months(btime,12) etime from x0),
x2 as
(select btime,etime,etime-btime day_num from x1),
x3 as
(select btime+(level-1) as dtime from x2 connect by level <= day_num),
x4 as
(select dtime,to_char(dtime,'dy') dy from x3)
select dy,count(*) from x4 group by dy
2.统计当年每个月的天数
with x0 as
(select trunc(sysdate,'yyyy') btime,add_months(trunc(sysdate,'yyyy'),12) from dual)
select add_months(btime,level-1) yyyymm,add_months(btime,level)-add_months(btime,level-1) days
from x0 connect by level<=12
相同SQL
select
to_char(add_months(trunc(sysdate,'yyyy'),level-1),'yyyymm') year_month,
last_day(add_months(trunc(sysdate,'yyyy'),level-1))-add_months(trunc(sysdate,'yyyy'),level-1)+1 days
from dual connect by level<=12
相关文章推荐
- Oracle笔记-Multitable INSERT 的用法
- Oracle Hint用法自学笔记
- ORACLE 中 WITH AS 的用法
- Oracle笔记-Multitable INSERT 的用法
- 关于oracle with as用法
- oracle的笔记,凑合着看吧! 1.简单的用法
- 关于oracle with as用法
- Oracle笔记-Multitable INSERT 的用法
- 关于oracle with as用法
- oracle with as 用法 和 wm_concat 用法
- oracle 的 with as 用法
- with as 用法(笔记)
- 关于oracle with table as 创建临时表的用法示例以及使用with as 的优点
- IT忍者神龟之关于oracle with as用法终结
- ORACLE WITH AS 用法
- ORACLE WITH AS 用法
- Oracle笔记之any,some,all以及exists与in的用法
- Oracle的Union、Union_All、Intersect、Minus用法---小笔记
- Oracle笔记-Multitable INSERT 的用法
- 关于Oracle中的as和with as 的用法