主頁(yè) > 知識(shí)庫(kù) > Oracle開(kāi)發(fā)之報(bào)表函數(shù)

Oracle開(kāi)發(fā)之報(bào)表函數(shù)

熱門標(biāo)簽:愛(ài)客外呼系統(tǒng)怎么樣 慧營(yíng)銷crm外呼系統(tǒng)丹丹 開(kāi)發(fā)外呼系統(tǒng) 圖吧網(wǎng)站地圖標(biāo)注 哪個(gè)400外呼系統(tǒng)好 山東crm外呼系統(tǒng)軟件 哈爾濱電話機(jī)器人銷售招聘 地圖標(biāo)注養(yǎng)老院 百度地圖標(biāo)注途經(jīng)點(diǎn)

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

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

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

復(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ù)的空括號(hào)表示該記錄集的所有記錄都應(yīng)該被列入統(tǒng)計(jì)的范圍,如果使用了partition by則先分區(qū),再依次統(tǒng)計(jì)各個(gè)分區(qū)。

二、RATIO_TO_REPORT函數(shù):

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

方法①:

復(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ù)允許我們計(jì)算每條記錄在其對(duì)應(yīng)記錄集或其子集中所占的比例。

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

您可能感興趣的文章:
  • Oracle 函數(shù)大全[字符串函數(shù),數(shù)學(xué)函數(shù),日期函數(shù)]
  • oracle 存儲(chǔ)過(guò)程和函數(shù)例子
  • ORACLE常用數(shù)值函數(shù)、轉(zhuǎn)換函數(shù)、字符串函數(shù)
  • Oracle中instr函數(shù)使用方法
  • 給Oracle添加split和splitstr函數(shù)的方法
  • oracle to_char函數(shù)將number轉(zhuǎn)成string
  • Oracle round()函數(shù)與trunc()函數(shù)區(qū)別介紹
  • Oracle隨機(jī)函數(shù)之dbms_random使用詳解
  • ORACLE時(shí)間函數(shù)(SYSDATE)深入理解
  • oracle中的trim函數(shù)使用介紹

標(biāo)簽:和田 甘肅 青島 周口 承德 開(kāi)封 武漢 固原

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle開(kāi)發(fā)之報(bào)表函數(shù)》,本文關(guān)鍵詞  Oracle,開(kāi),發(fā)之,報(bào)表,函數(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle開(kāi)發(fā)之報(bào)表函數(shù)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Oracle開(kāi)發(fā)之報(bào)表函數(shù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章