1. 程式人生 > >mysql 分組group by後 根據具體條件進行sum

mysql 分組group by後 根據具體條件進行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