<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 262,  comments - 221,  trackbacks - 0
    目錄
    =========================================

    1.報表函數(shù)簡介
    2.RATIO_TO_REPORT函數(shù)

    一、報表函數(shù)簡介:

    回顧一下前面《Oracle開發(fā)專題之:窗口函數(shù)》中關于
    全統(tǒng)計一節(jié),我們使用了Oracle提供的:
    sum(sum(tot_sales)) over (order by month rows between unbounded preceding and unbounded following)

    來統(tǒng)計全年的訂單總額,這個函數(shù)會在記錄集形成的過程中,每檢索一條記錄就執(zhí)行一次,它總共執(zhí)行了12次。這是非常費時的。實際上我們還有更簡便的方法:
    SQL> select month,
      
    2         sum(tot_sales) month_sales,
      
    3         sum(sum(tot_sales)) over(order by month
      
    4         rows between unbounded preceding and unbounded following) win_sales,
      
    5         sum(sum(tot_sales)) over() rpt_sales
      
    6    from orders
      
    7   group by month;

         
    MONTH MONTH_SALES WINDOW_SALES REPORT_SALES
    ---------- ----------- ------------ ------------
             1      610697      6307766      6307766
             
    2      428676      6307766      6307766
             
    3      637031      6307766      6307766
             
    4      541146      6307766      6307766
             
    5      592935      6307766      6307766
             
    6      501485      6307766      6307766
             
    7      606914      6307766      6307766
             
    8      460520      6307766      6307766
             
    9      392898      6307766      6307766
            
    10      510117      6307766      6307766
            
    11      532889      6307766      6307766
            
    12      492458      6307766      6307766

    已選擇12行。

    over函數(shù)的空括號表示該記錄集的所有記錄都應該被列入統(tǒng)計的范圍,如果使用了partition by則先分區(qū),再依次統(tǒng)計各個分區(qū)。

    二、RATIO_TO_REPORT函數(shù):

    報表函數(shù)特(窗口函數(shù))特別適合于報表中需要同時顯示詳細數(shù)據(jù)和統(tǒng)計數(shù)據(jù)的情況。例如在銷售報告中經(jīng)常會出現(xiàn)這樣的需求:列出上一年度每個月的銷售總額、年底銷售額以及每個月的銷售額占全年總銷售額的比例:

    方法①:
    select all_sales.*,
               
    100 * round(cust_sales / region_sales, 2|| '%' Percent
     
    from (select o.cust_nbr customer,
                            o.region_id region,
                           
    sum(o.tot_sales) cust_sales,
                           
    sum(sum(o.tot_sales)) over(partition by o.region_id) region_sales
                   
    from orders_tmp o
                
    where o.year = 2001
                 
    group by o.region_id, o.cust_nbr) all_sales
     
    where all_sales.cust_sales > all_sales.region_sales * 0.2;

    這是一種笨方法也是最易懂的方法。

    方法②:
    select region_id, salesperson_id, 
               
    sum(tot_sales) sp_sales,
               
    round(sum(tot_sales) sum(sum(tot_sales)
                          
    over (partition by region_id), 2) percent_of_region
      
    from orders
    where year = 2001
     
    group by region_id, salesperson_id
     
    order by region_id, salesperson_id;

    方法③
    select region_id, salesperson_id, 
                
    sum(tot_sales) sp_sales,
                
    round(ratio_to_report(sum(tot_sales)) 
                              
    over (partition by region_id), 2) sp_ratio
       
    from orders
    where year = 2001
    group by region_id, salesperson_id
    order by region_id, salesperson_id;

    Oracle提供的Ratio_to_report函數(shù)允許我們計算每條記錄在其對應記錄集或其子集中所占的比例。

    參考資料:《Mastering Oracle SQL》(By Alan Beaulieu, Sanjay Mishra O'Reilly June 2004  0-596-00632-2) 


    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2008-06-29 12:02 Paul Lin 閱讀(5804) 評論(3)  編輯  收藏 所屬分類: Oracle 開發(fā)


    FeedBack:
    # re: 【原】Oracle開發(fā)專題之:報表函數(shù)
    2008-09-03 15:54 | yz
    博主的ORACLE開發(fā)專題,很值得學習,謝謝了!  回復  更多評論
      
    # re: 【原】Oracle開發(fā)專題之:報表函數(shù)
    2010-09-01 16:53 | 主程序
    學了不少東西,感謝  回復  更多評論
      
    # re: 【原】Oracle開發(fā)專題之:報表函數(shù)
    2014-04-17 10:53 | wffger
    證件信息zjxx表,記錄有經(jīng)辦人jbr,證件種類zjzl,車輛種類clzl 的信息.
    如何報表輸出:
    經(jīng)辦人簽發(fā)的證件種類為XX、車輛種類為XX的通行證數(shù)XX單,對應的車輛數(shù)為XX?  回復  更多評論
      
    <2008年6月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品网站在线观看你懂的| 亚洲中文字幕无码av在线| 日本免费久久久久久久网站| 亚洲视频一区在线| 免费无码又爽又刺激高潮| 黄色网址大全免费| 亚洲国产精品无码专区影院| 国产成人午夜精品免费视频| 日韩国产欧美亚洲v片| 国产精品国产亚洲精品看不卡| 国产一卡2卡3卡4卡2021免费观看| 精品国产日韩亚洲一区在线| 亚洲AV午夜成人片| 好男人视频在线观看免费看片| 久久er国产精品免费观看8| 亚洲大香伊人蕉在人依线| 亚洲国产精品无码久久青草 | 亚洲中文字幕无码一区二区三区| 最近中文字幕大全免费视频| 国产成人亚洲精品91专区高清| 国产成人亚洲毛片| 亚洲精品午夜国产VA久久成人| 日本精品人妻无码免费大全| h片在线观看免费| 亚洲人成欧美中文字幕| 亚洲AV午夜福利精品一区二区| 免费h成人黄漫画嘿咻破解版| 99久久99热精品免费观看国产| 黄色网址在线免费观看| 亚洲国产福利精品一区二区| 中文字幕亚洲一区二区三区 | 亚洲人成无码网站久久99热国产| 亚洲w码欧洲s码免费| 久久久WWW免费人成精品| 亚洲色大成网站www| 久久亚洲日韩精品一区二区三区| 亚洲视频在线免费| 在线观看人成网站深夜免费| 69影院毛片免费观看视频在线 | 2020因为爱你带字幕免费观看全集| 日日躁狠狠躁狠狠爱免费视频 |