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

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

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

    海上月明

    editer by sun
    posts - 162, comments - 51, trackbacks - 0, articles - 8
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    用Oracle RATIO_TO_REPORT計算總數百分比

    Posted on 2010-08-24 13:43 pts 閱讀(9298) 評論(0)  編輯  收藏

    除報告詳細數據外,許多報告中還包括每行總數的百分比。例如,每名客戶的訂單相對于總訂單的百分比,或每位銷售代表的銷售額相對于總銷售額的百分比。

    傳統上,Oracle計算百分比的方法是在總計報告的子查詢中使用SUM函數總計報告,然后把那個結果放到細節表中相除來計算百分比。你還可以用一個子查詢作為SELECT語句表達式:

    RATIO_TO_REPORT解析函數使得這種類型的查詢更容易編碼。Oracle 8i中引入了這個函數,它的格式如下:

    RATIO_TO_REPORT (expr) OVER (query_partition_clause)

    列表A說明一個簡單的例子。對163號銷售代表來說,每位客戶的銷售額占這名銷售代表的總銷售額的百分比是多少呢?在這種情況下,查詢分區子句(partition clause)為空,因此得到的結果是對返回的所有行計算得出。列表B增加了一個查詢分區子句,進一步按客戶細分報告。

    PARTITION BY customer_id子句重新安排每位客戶的總數,進而說明每名客戶的哪次訂單最為關鍵。你可以查看客戶102的情況,他的兩個訂單相對平衡;但客戶103的一個訂單占這名客戶總訂單額的很大一部分。

    Oracle解析可幫助你節省編碼時間,并在執行過程中生成更加有效的查詢。

     

    Listing A
    
    SELECT
       sales_rep_id, customer_id, order_total,
       ratio_to_report(order_total) OVER () pct_total
    FROM
       orders
    WHERE
       sales_rep_id = 163
    ORDER BY
       sales_rep_id, customer_id, order_id
    /
    
    SQL> @ratioreport_a
    
    SALES_REP_ID CUSTOMER_ID ORDER_TOTAL  PCT_TOTAL                                 
    ------------ ----------- ----------- ----------                                 
             163         102      5610.6 .043747539                                 
             163         102       10523 .082051002                                 
             163         103          78  .00060819                                 
             163         103       13550 .105653433                                 
             163         105      1926.6 .015022281                                 
             163         106      5546.6 .043248512                                 
             163         117      3878.4 .030241054                                 
             163         147      1500.8  .01170219                                 
             163         149        9055 .070604564                                 
             163         156       68501  .53412294                                 
             163         157      7110.3 .055441152                                 
             163         160       969.2 .007557144                                 
    
    12 rows selected.
    
    SQL>
    <br />
    <span style="font-family: Verdana, Arial, Helvetica, sans-serif, 宋體; white-space: normal;"><pre id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">Listing B
    
    col order_total format 999,999.00
    col pct_total format 999.00
    
    SELECT
       sales_rep_id, 
       customer_id, 
       order_total,
       ROUND(100*ratio_to_report(order_total) 
          OVER (PARTITION BY customer_id),2) pct_total
    FROM
       orders
    WHERE
       sales_rep_id = 163
    ORDER BY
       sales_rep_id, customer_id, order_id/
    
    SQL> @ratioreport_b
    
    SALES_REP_ID CUSTOMER_ID ORDER_TOTAL PCT_TOTAL                                  
    ------------ ----------- ----------- ---------                                  
             163         102    5,610.60     34.78                                  
             163         102   10,523.00     65.22                                  
             163         103       78.00       .57                                  
             163         103   13,550.00     99.43                                  
             163         105    1,926.60    100.00                                  
             163         106    5,546.60    100.00                                  
             163         117    3,878.40    100.00                                  
             163         147    1,500.80    100.00                                  
             163         149    9,055.00    100.00                                  
             163         156   68,501.00    100.00                                  
             163         157    7,110.30    100.00                                  
             163         160      969.20    100.00                                  
    
    12 rows selected.
    
    SQL> spool off


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 毛片a级毛片免费观看免下载| 67194熟妇在线永久免费观看| 国产一区二区三区免费在线观看| 亚洲一区二区三区久久| 在线免费观看国产| 亚洲欧洲日本国产| 成年在线观看网站免费| 亚洲精品亚洲人成在线播放| 中文字幕无码不卡免费视频| 亚洲午夜精品久久久久久app | 亚洲成人影院在线观看| 添bbb免费观看高清视频| 亚洲爽爽一区二区三区| 中国一级特黄高清免费的大片中国一级黄色片 | 免费国产综合视频在线看 | 亚洲欧洲日产国产最新| 成人AV免费网址在线观看| 亚洲欧美不卡高清在线| 免费在线一级毛片| 成人国产精品免费视频| 亚洲国产一区二区a毛片| 国产四虎免费精品视频| 亚洲GV天堂GV无码男同| 亚洲女同成人AⅤ人片在线观看| 国内永久免费crm系统z在线| 亚洲码一区二区三区| 女人张开腿给人桶免费视频| 日韩在线视频线视频免费网站| 久久久亚洲精品视频| 精品久久久久久久免费加勒比| 久久99久久成人免费播放| 久久久亚洲欧洲日产国码二区 | 一级毛片全部免费播放| 亚洲 欧洲 视频 伦小说| 亚洲一区二区三区在线视频| 久久A级毛片免费观看| 亚洲熟妇自偷自拍另欧美| 亚洲综合图色40p| 免费看黄视频网站| 久青草视频97国内免费影视| 亚洲国产日韩在线|