mysql 中SUM 函數的高級用法





mysql的手冊中對SUM函數的介紹非常簡單和含糊, 今天在搜資料的時候發現SUM函數的參數還可以加入條件判斷. 
比如有如下的一個表:

日期             支出項目名稱            支出類別            支出金額            類別編號

2006-07-03          購買發票                              發票                  709                            2
2006-07-05         華夏干紅2瓶(單價32)            吧台支出         64                         3
2006-07-05         鮮橙多33瓶(單價1)              吧台支出         33                         3
2006-07-05         購雪碧,百事42瓶(單價2)          吧台支出         84                         3
2006-07-05         購菜金                                其它         180.6                         1
2006-07-05         手機網絡費                           辦公用品         8                         4
2006-07-05         手機SIM卡一張                 辦公用品         20                         4
2006-07-05         手機英華OK106一台             辦公用品         310                         4
2006-07-05         購飲料人工費                            吧台支出         3                         3
2006-07-05         冰點水17瓶(單價2)            吧台支出         34                         3
2006-07-06         廣告費                         其它                 900                         1
2006-07-06         微波爐                         其它                 299                         1
2006-07-06         垃圾桶                         其它                 30                         1
2006-07-06         意見簿                         其它                 20                         1
2006-07-06         冰糖夾                         其它                 4                         1
2006-07-06         開刀                         其它                 6                         1
2006-07-06         修正液                         辦公用品         2                         4
2006-07-06         圓珠筆芯                 辦公用品         8                         4
2006-07-06         打碼機,印泥                 辦公用品         7                         4
2006-07-06         收銀夾                         辦公用品         9                         4


現在要對每天, 每種支出類別的總和建立一個視圖,可以用這樣的語句:

CREATE VIEW `tbl_view` AS SELECT
日期,
SUM( IF( 類別編號 =1, 支出金額, 0 ) ) AS 其它支出,
SUM( IF( 類別編號 =2, 支出金額, 0 ) ) AS 發票,
SUM( IF( 類別編號 =3, 支出金額, 0 ) ) AS 吧台支出,
SUM( IF( 類別編號 =4, 支出金額, 0 ) ) AS  辦公用品
FROM `tbl`
ORDER BY `日期`
GROUP BY `日期`


建好的視圖 tbl_view會是這個樣子:

日期                其它支出                發票                吧台支出                辦公用品 
2006-07-03        0                        709                0                        0
2006-07-05        180.6                        0                218                        138
2006-07-06        1253                        0                0                        26


語句 SUM( IF( 類別編號 =1, 支出金額, 0 ) ) AS 其它支出,
表示當類別編號為1的時候對支出金額列求和, 第三個參數0不太清楚,
大概是缺省值為0的意思吧.

con
暈, 剛剛又研究了下文檔, 發現 IF 其實是mysql的一個流程控制函數,
接受三個參數, 當第一個參數的結果為真的時候返回第二個參數, 否則返回第三個參數
看來還得好好研究下mysql的函數啊

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com