婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle開發之報表函數

Oracle開發之報表函數

熱門標簽:愛客外呼系統怎么樣 慧營銷crm外呼系統丹丹 開發外呼系統 圖吧網站地圖標注 哪個400外呼系統好 山東crm外呼系統軟件 哈爾濱電話機器人銷售招聘 地圖標注養老院 百度地圖標注途經點

一、回顧一下前面《Oracle開發之窗口函數》中關于全統計一節,我們使用了Oracle提供的:

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

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

復制代碼 代碼如下:
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函數的空括號表示該記錄集的所有記錄都應該被列入統計的范圍,如果使用了partition by則先分區,再依次統計各個分區。

二、RATIO_TO_REPORT函數:

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

方法①:

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

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

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

標簽:和田 甘肅 青島 周口 承德 開封 武漢 固原

巨人網絡通訊聲明:本文標題《Oracle開發之報表函數》,本文關鍵詞  Oracle,開,發之,報表,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle開發之報表函數》相關的同類信息!
  • 本頁收集關于Oracle開發之報表函數的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 夏河县| 淅川县| 中西区| 湖南省| 新乡县| 平果县| 永年县| 曲麻莱县| 修水县| 平塘县| 罗城| 千阳县| 庆城县| 宣威市| 中卫市| 高青县| 启东市| 县级市| 乌拉特前旗| 宁阳县| 古蔺县| 塘沽区| 威海市| 大同市| 霍林郭勒市| 涞源县| 晋中市| 富宁县| 宾川县| 凤山县| 鹤岗市| 临沂市| 莫力| 东方市| 郁南县| 工布江达县| 卓尼县| 高阳县| 长武县| 嘉禾县| 石屏县|