mysql 中SUM 函式的高階用法
阿新 • • 發佈:2019-01-23
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的意思吧.