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的函数啊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值