自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

同表多次查詢不同時(shí)段數(shù)據(jù)的oracle創(chuàng)建視圖方法

數(shù)據(jù)庫(kù) Oracle
如果我們需要同表多次查詢不同時(shí)段數(shù)據(jù),那么需要的視圖應(yīng)該如何創(chuàng)建呢?下文對(duì)該視圖的創(chuàng)建過(guò)程作了詳細(xì)的說(shuō)明,供您參考。

oracle創(chuàng)建視圖的方法相信大家都有一定的了解,下面為您介紹的是同表多次查詢不同時(shí)段數(shù)據(jù)的oracle創(chuàng)建視圖方法,希望對(duì)您有所啟迪。

項(xiàng)目開(kāi)發(fā)過(guò)程中有一個(gè)小時(shí)流量表,分別記錄每個(gè)小時(shí)每個(gè)通道的流量,簡(jiǎn)化字段如下(只保留有效字段):
 NAME   Null?Type
------------------------------- --------- -----
IDNUMBER(19,0)
REPORT_TIME DATE
SEND_NUM    NUMBER(19,0)
SUCCESS_NUM NUMBER(19,0)
 
現(xiàn)在需要?jiǎng)?chuàng)建一個(gè)視圖,字段如下:通道id,上一個(gè)小時(shí)發(fā)送成功率,上第二個(gè)小時(shí)發(fā)送成功率,上第三小時(shí)發(fā)送成功率,比如:現(xiàn)在是14點(diǎn),則需要13點(diǎn),12點(diǎn),11點(diǎn)這三個(gè)時(shí)段的分別發(fā)送成功率,如果send_num 為0,或者null,則結(jié)果為null。

oracle創(chuàng)建視圖過(guò)程:

1. 時(shí)間段的處理:
to_char(sysdate,'hh24')-to_char(report_time,'hh24') 可以獲取小時(shí)差,根據(jù)結(jié)果為1,2,3 三種情況分別查詢結(jié)果??梢允褂胏ase ... when... then... end 判斷。這里有一種情況需要注意:后面一天的小時(shí)為00 ,前一天的小時(shí)為23時(shí),需要特殊處理,否則出現(xiàn)負(fù)數(shù),這里使用 +24 轉(zhuǎn)換為正數(shù)。這樣完成小時(shí)差的比較。

2. send_num 如果為null或者0時(shí) 作為除數(shù)的情況:
可以先處理send_num,如果為null或者0,直接不做計(jì)算處理。

3.列出完整的查詢語(yǔ)句:

  1. select  vmhr.v_mo,  
  2. vmhr.org_code,  
  3. case decode(sign(to_char(sysdate,'hh24')-to_char(report_time,'hh24')),-1,to_char  (sysdate,'hh24')-to_char(report_time,'hh24')+24,to_char(sysdate,'hh24')-to_char(report_time,'hh24')) when 1 then (select decode(nvl(send_num,0),0,null,nvl(success_num,0)/nvl(send_num,1)) from channel_flux where v_mo=vmhr.v_mo) end last_1_suss_rate,  
  4.  
  5. case decode(sign(to_char(sysdate,'hh24')-to_char(report_time,'hh24')),-1,to_char(sysdate,'hh24')-to_char(report_time,'hh24')+24,to_char(sysdate,'hh24')-to_char(report_time,'hh24')) when 2 then (select decode(nvl(send_num,0),0,null,nvl(success_num,0)/nvl(send_num,1)) from channel_flux where v_mo=vmhr.v_mo) end last_2_suss_rate,  
  6.  
  7. case decode(sign(to_char(sysdate,'hh24')-to_char(report_time,'hh24')),-1,to_char(sysdate,'hh24')-to_char(report_time,'hh24')+24,to_char(sysdate,'hh24')-to_char(report_time,'hh24')) when 3 then (select decode(nvl(send_num,0),0,null,nvl(success_num,0)/nvl(send_num,1)) from channel_flux where v_mo=vmhr.v_mo) end last_3_suss_rate  
  8. from channel_flux vmhr  

說(shuō)明:sign(var) 是oracle內(nèi)置函數(shù),得到變量var的正負(fù)值,小于0 返回 -1,等于0返回0,大于0返回1. decode是oracle的內(nèi)置函數(shù),可以做簡(jiǎn)單的判斷;case...when...then ... end 判斷條件,表示case 變量 when 滿足條件 then 執(zhí)行語(yǔ)句 end 具體的使用可以查詢oracle的幫助文檔。

4.完成查詢后,創(chuàng)建視圖:
create view as .... ,補(bǔ)上上面的查詢語(yǔ)句,完成視圖需求。
 

 

 

【編輯推薦】

Oracle創(chuàng)建表和索引

oracle重建索引的實(shí)現(xiàn)

全面解析Oracle文件系統(tǒng)

ORACLE系統(tǒng)表和數(shù)據(jù)字典視圖

深度解析Oracle ERP系統(tǒng)模塊

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-04-07 10:45:43

Oracle視圖創(chuàng)建

2010-10-29 16:48:30

oracle查詢所有表

2010-11-16 10:42:45

Oracle創(chuàng)建視圖

2010-05-10 18:30:31

Oracle多表創(chuàng)建

2010-11-15 16:08:15

ORACLE系統(tǒng)表

2009-05-21 09:24:42

表空間查詢Oracle

2011-04-13 13:56:52

Oracle臨時(shí)表

2010-10-27 16:27:18

Oracle查詢

2010-09-30 14:48:26

DB2查詢

2010-10-26 16:43:58

查看Oracle索引

2010-05-06 09:30:16

Oracle創(chuàng)建數(shù)據(jù)庫(kù)

2010-10-26 16:33:54

創(chuàng)建Oracle索引

2010-04-12 16:50:47

Oracle索引聚簇表

2010-11-16 10:32:01

Oracle創(chuàng)建表空間

2010-11-19 10:11:49

Oracle物化視圖

2010-04-19 10:08:46

Oracle視圖

2010-10-27 17:11:35

oracle查詢

2010-05-04 08:50:24

Oracle表

2010-11-19 10:48:44

oracle視圖

2010-09-09 15:13:33

SQL更新數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)