欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle開發(fā)之報表函數(shù)

 更新時間:2016年05月26日 11:30:28   作者:Paul Lin  
本文主要介紹Oracle報表函數(shù)RATIO_TO_REPORT的具體使用方法,需要的朋友可以參考下。

一、回顧一下前面《Oracle開發(fā)之窗口函數(shù)》中關(guān)于全統(tǒng)計一節(jié),我們使用了Oracle提供的:

復(fù)制代碼 代碼如下:
sum(sum(tot_sales)) over (order by month rows between unbounded preceding and unbounded following)

來統(tǒng)計全年的訂單總額,這個函數(shù)會在記錄集形成的過程中,每檢索一條記錄就執(zhí)行一次,它總共執(zhí)行了12次。這是非常費時的。實際上我們還有更簡便的方法:

復(fù)制代碼 代碼如下:
SQL> select month,
         sum(tot_sales) month_sales,
         sum(sum(tot_sales)) over(order by month
         rows between unbounded preceding and unbounded following) win_sales,
         sum(sum(tot_sales)) over() rpt_sales
    from orders
   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ù)的空括號表示該記錄集的所有記錄都應(yīng)該被列入統(tǒng)計的范圍,如果使用了partition by則先分區(qū),再依次統(tǒng)計各個分區(qū)。

二、RATIO_TO_REPORT函數(shù):

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

方法①:

復(fù)制代碼 代碼如下:
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;

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

方法②:

復(fù)制代碼 代碼如下:
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;

方法③

復(fù)制代碼 代碼如下:
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ù)允許我們計算每條記錄在其對應(yīng)記錄集或其子集中所占的比例。

以上就是Oracle報表函數(shù)用法的全部內(nèi)容,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Oracle中查詢結(jié)果合并的方法詳解

    Oracle中查詢結(jié)果合并的方法詳解

    這篇文章主要給大家介紹了Oracle中查詢結(jié)果合并的方法,利用union合并查詢,利用intersect合并查詢,利用“union all”合并查詢,利用minus合并查詢,需要的朋友可以參考下
    2023-08-08
  • oracle 實際值超過數(shù)據(jù)庫某個字段指定長度報錯解決

    oracle 實際值超過數(shù)據(jù)庫某個字段指定長度報錯解決

    本節(jié)主要介紹了oracle 實際值超過數(shù)據(jù)庫某個字段指定長度報錯解決方法,需要的朋友可以參考下
    2014-07-07
  • 在客戶端配置TNS測試報錯ORA-12170:TNS:連接超時

    在客戶端配置TNS測試報錯ORA-12170:TNS:連接超時

    在Red Hat Enterprise Linux Server Releae 5.5 成功安裝ORACLE 10g 后,在客戶端配置TNS后,測試是否可以連接到數(shù)據(jù)塊服務(wù)器,結(jié)果報錯:ORA-12170:TNS:連接超時
    2012-12-12
  • 將oracle的create語句更改為alter語句使用

    將oracle的create語句更改為alter語句使用

    本文將詳細(xì)介紹oracle的create語句更改為alter語句使,需要了解更多的朋友可以參考下
    2012-11-11
  • oracle數(shù)據(jù)庫id自增及生成uuid問題

    oracle數(shù)據(jù)庫id自增及生成uuid問題

    這篇文章主要介紹了oracle數(shù)據(jù)庫id自增及生成uuid問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • oracle 11g的安裝注意事項總結(jié)

    oracle 11g的安裝注意事項總結(jié)

    這篇文章主要給大家介紹了關(guān)于oracle 11g的安裝注意事項,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Oracle過程與函數(shù)的區(qū)別分析

    Oracle過程與函數(shù)的區(qū)別分析

    在Oracle數(shù)據(jù)庫中,過程和函數(shù)都以編譯后的形式存放在數(shù)據(jù)庫中,二者的主要區(qū)別在于他們的調(diào)用方式,下文對二者的區(qū)別作了詳盡的描述,供您參考
    2014-08-08
  • Oracle連接出現(xiàn)ora-12154無法解析指定的連接標(biāo)識符

    Oracle連接出現(xiàn)ora-12154無法解析指定的連接標(biāo)識符

    這篇文章主要介紹了Oracle連接出現(xiàn)ora-12154無法解析指定的連接標(biāo)識符,需要的朋友可以參考下
    2017-03-03
  • Oracle常用函數(shù)超詳細(xì)整理

    Oracle常用函數(shù)超詳細(xì)整理

    Oracle是一種常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),提供了許多內(nèi)置函數(shù),用于處理和操作數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Oracle常用函數(shù)超詳細(xì)整理的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Oracle關(guān)于重建索引爭論的總結(jié)

    Oracle關(guān)于重建索引爭論的總結(jié)

    這篇文章主要介紹了Oracle關(guān)于重建索引爭論的總結(jié),本文總結(jié)了重建索引的理由、重建索引的本質(zhì)、反對重建索引的理由等內(nèi)容,需要的朋友可以參考下
    2014-09-09

最新評論