Oracle範圍處理

來源:互聯網
上載者:User

標籤:

1.表中欄位自關聯與分析函數的效能比較,自關聯需要掃描表兩次,分析函數掃描一次即可

----自關聯select v1.proj_id,v1.proj_start,v1.proj_endfrom v v1,v v2where v1.proj_start=v2.proj_end----分析函數select proj_id,proj_start,proj_endfrom (select proj_id,proj_start,proj_end,          lead(proj_start) over(order by proj_id) nproj_start          from v)where nproj_start = proj_end

上述處理方式稍作修改,也可以用於計算使用者登入的時間間隔, lead(xxx) over(partition user order by xxx),先按照使用者進行分區

2.連續的時間段合并處理,求解合并後的時間區間。

select groupId,min(proj_start),max(proj_end)  from (select proj_id,proj_start,proj_end,sum(status)  over(order by proj_id) groupId     (select proj_id,proj_start,proj_end,          case when lag(proj_end) over(order by proj_id)=proj_start                   then 0 else 1 end status   from v)) group by groupId order by 1

3.Lag和lead是一種連續資料處理函數,對於資料時區間內的判斷則需要between的方式來判斷

with x0 as  (select id,sdate,edate             max(edate) over (order by sdate rows between unbounded preceding and 1 preceding) as medate    from b),       x1 as   (select sdate,edate,medate,case when medate>sdate then 0 else 1 end as status from x0),       x2 as   (select sdate,edate,sum(status) over(order by sdate) as groupId from x1)   select groupId,min(sdate),max(edate)    from x2   group by groupId   order by groupId

Oracle範圍處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.