Mysql 應用CASE WHEN 語句條件計算的一個實例

業務需求描述:

現有核減費用表edu_syn_hd_ded(ID  SERVICECODE   CUTTYPE   CUTFEE )

列定義:ID  服務號   覈減類型    覈減費用。

有核減規則:

1. 類型是01的,覈減費用要除以0.35的比例,

2. 其他類型的,不用做處理直接計算

現需要:需要統計服務號爲 102701 的業務的核減總費用

分析:

首先考慮如果沒有條件時該如何計算,那麼直接是按服務號聚集來計算SUM:

select SERVICECODE, SUM(CUTFEE)
           from edu_syn_hd_ded
           where
           SERVICECODE = '102701'
           group by SERVICECODE 

那麼,現在考慮加入覈減類型,需要使用CUTFEE分別求出實際的金額(按類型來處理,除以100是換算單位 分 到 元 ):

select CUTTYPE,SERVICECODE,
          (case
              when CUTTYPE = '01'
                then ifnull(round(sum(CUTFEE) / 0.35 / 100, 2), 0)
              else 
                ifnull(sum(CUTFEE) / 100, 0)
              end
              )as allcount

           from edu_syn_hd_ded
           where
           SERVICECODE = '102701'
           group by SERVICECODE, CUTTYPE

執行結果如圖:

可以看到按照類型,我們已經得到了相應的金額。

接下來只要把查詢結果相加即可,外層包一個查詢:

select sum(allcount) from (select CUTTYPE,SERVICECODE,
          (case
              when CUTTYPE = '01'
                then ifnull(round(sum(CUTFEE) / 0.35 / 100, 2), 0)
              else 
                ifnull(sum(CUTFEE) / 100, 0)
              end
              )as allcount

           from edu_syn_hd_ded
           where
           SERVICECODE = '102701'
           group by SERVICECODE, CUTTYPE) temp;

執行結果如下:

分解問題,逐步實現,不要慌!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章