mysql数据库中group by和sum一起使用语句
一、案例1
还记得我们以前讲过的用SUM这个mysql函数来查出数据表中所有的人的总数和吧?当然那个时候是一个整体的和,如果现在我们要查询的是男生和女生的各自的总年龄怎么查呢?查询的sql语句又该怎么写呢?其实这是我们只要把人按性别来分组,然后还是用SUM函数来求和就可以了,关键是怎么分组呢,这就要用到mysql的group by语句了,它可以实现分组,下面看看sql语句吧:
SELECT SUM("栏目1") FROM "表格名" GROUP BY "栏目2" 比如我们的数据库信息如下(sex中1表示男生,0表示女生): msg_info 表格 name age sex Los 20 1 San 25 0 Lan 30 0 Bos 23 1 mini 28 1 于是我们我们的sql语句就形成了: SELECT sex,sum(age) FROM `msg_info` group by sex 结果: sex sum(age) 0 55 1 71
二、案例2
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的时候对支出金额列求和