業務需求描述:
現有核減費用表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;
執行結果如下:
分解問題,逐步實現,不要慌!