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

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

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

    冷面閻羅

    低調做人&&高調做事
    隨筆 - 208, 文章 - 3, 評論 - 593, 引用 - 0
    數據加載中……

    ORACLE數據統計0的處理

              大概是前一周去見客戶,他要弄了年終統計報表,從系統中所有臺帳的基礎數據去統計總算、容量等數據。
             拿到統計模板一看,傻眼了需要統計近百項,而且每一項都需要單獨使用SQL去查詢。
             起初  為了方便查詢數據,中間視圖套用視圖,結果發現我嵌套了3層視圖,效率實在不敢恭維。
             后來 為了提高效率,就把中間的視圖去掉,改為從表查詢數據,結果每個項需要查詢3~4表,效率比第一次提升不少。其實查詢這種統計數據,千萬不能視圖套用視圖,那效率就沒的說了。

            程序實現,發現使用count(*)統計總數的時候,如沒有則顯示0;使用sum()統計,則沒有不顯示,這樣我前臺頁面上有的沒有數據顯示0,有的沒有數據不顯示,不統一也不美觀。
       
           改造1,在查詢數據的java端操作,不是我不想在 我的視圖中修改,我先后試驗過decode、nvl、case甚至使用if then else 語句,都沒有把這個討厭的0去掉,沒有部分只好在java端進行for循環了,這樣效率也不怎么樣,白白多了2層循環,鑒于視圖寫的比較合理,這樣的速度客戶居然能接受。

          晚上睡覺就想,怎么才能把0去掉了,基本上把oracle的函數都想一遍了,甚至想自己寫的函數實現,后來想到replace函數,結果使用成功了。

         但是發現使用replace的效率好像沒有使用改造1的方案快?

        不知各位還有沒有別的方法處理0這個問題,歡迎大家討論一下。

    posted on 2008-07-11 16:12 冷面閻羅 閱讀(5468) 評論(8)  編輯  收藏 所屬分類: 數據庫

    評論

    # re: ORACLE數據統計0的處理  回復  更多評論   

    呵呵不是方法的方法,但能解決問題。vista的源碼中說不定也有這樣曲線救國的代碼呢
    :)
    2008-07-11 17:09 | hnwyf

    # 大梅沙云頂天海會所  回復  更多評論   

    大梅沙云頂天海會所
    2008-07-11 17:47 | 大梅沙云頂天海會所

    # re: ORACLE數據統計0的處理  回復  更多評論   

    --有兩個辦法,可以不用去改java程序,而在SQL里進行統一
    --一個是在使用sum的查詢外面再嵌套一層:
    select sum(1) as a from tbl_test t where t.id<100
    -->
    select (case when x.a is null then 0 end) as a from --在外層對NULL進行轉換
    (select sum(1) as a from tbl_test t where t.id<100) x

    --第二種辦法是直接在sum的參數里進行處理:
    select sum(1) as a from tbl_test t where t.id<100
    -->
    select sum(case when t.id<100 then 1 else 0 end) as a from tbl_test t
    --把統計條件放到sum的參數里,可以對NULL進行轉換
    2008-07-13 00:08 | masuz

    # re: ORACLE數據統計0的處理  回復  更多評論   

    @masuz
    sum函數如果求和的列沒有數據,即為null的時候,sum后的結果為null,
    但是count函數,統計的函數是從0開始的。
    2008-07-13 08:11 | 冷面閻羅

    # re: ORACLE數據統計0的處理  回復  更多評論   

    如果sum的列為NULL,那就判斷一下再sum,應該可以
    select sum(case when t.num is null then 0 else t.num end) as a from tbl_test t
    2008-07-13 14:36 | masuz

    # re: ORACLE數據統計0的處理[未登錄]  回復  更多評論   

    使用nvl
    2008-07-14 12:27 | Jarod

    # re: ORACLE數據統計0的處理[未登錄]  回復  更多評論   

    在項目實施過程中也遇到一個類似的問題。
    要統計數據,但是表中間一條數據都沒有,結果用SUM出來什么都沒有,客戶希望出來的是0.
    結果就先用count(*)判斷是不是有記錄,沒有直接返回0,有再進行SUM操作。SUM操作的時候將NULL的變成0,這樣進行統計,結果始出來的。不過用count函數,還必須有個GROUP BY的操作,變態啊……
    2008-07-14 12:36 | James

    # re: ORACLE數據統計0的處理[未登錄]  回復  更多評論   

    select nvl(sum(x),0) from xxx

    這樣就行了....
    2008-07-14 14:25 | yy
    主站蜘蛛池模板: 亚洲视频在线观看免费| 国产V亚洲V天堂A无码| 亚洲av乱码一区二区三区| 久久精品一本到99热免费| 久久亚洲AV无码精品色午夜麻| 一个人晚上在线观看的免费视频| 可以免费观看的一级毛片| 一级成人毛片免费观看| 国产性爱在线观看亚洲黄色一级片| 国产免费福利体检区久久| 亚洲色精品vr一区二区三区| 最新国产乱人伦偷精品免费网站| 亚洲网站在线观看| 精品国产污污免费网站aⅴ| 亚洲中文字幕AV在天堂| 国产成人青青热久免费精品| 美女又黄又免费的视频| 亚洲国产精彩中文乱码AV| 国产精品久久永久免费| 亚洲高清毛片一区二区| 亚洲AV无码乱码在线观看牲色| 久久性生大片免费观看性| 久久精品国产亚洲精品2020| 一二三四免费观看在线视频中文版| 亚洲大码熟女在线观看| 亚洲精品乱码久久久久久自慰| 91香蕉在线观看免费高清| 亚洲AV色欲色欲WWW| 亚洲综合精品香蕉久久网| 91人人区免费区人人| 亚洲αⅴ无码乱码在线观看性色| 亚洲男人在线无码视频| 永久黄色免费网站| 边摸边吃奶边做爽免费视频网站 | 91免费在线视频| 亚洲色大成网站www永久| 国产在线不卡免费播放| 久久99精品免费视频| 亚洲精品无AMM毛片| 亚洲AV永久无码精品水牛影视| 毛片a级毛片免费观看免下载|