mysql中的if函数还是很强大的,特别是在做一些统计查询时,
可以讲多个查询结果合并成一条记录
例如:有这样一张表
产品名productname | 用户名username | 部门departname | 评分score |
香瓜子 | 张三 | 调查部 | 2 |
香瓜子 | 李四 | 调查部 | 3 |
香瓜子 | 王五 | 市场部 | 4 |
香瓜子 | 赵六 | 市场部 | 5 |
原味瓜子 | 明明 | 调查部 | 6 |
原味瓜子 | 琪琪 | 开发部 | 7 |
通过一条sql语句查询出每个部门对产品的评分以及总分
显示如下
产品名productname | 开发部评分 | 调查部评分 | 市场部评分 | 总分 |
原味瓜子 | 7 | 6 | 0 | 13 |
香瓜子 | 0 | 5 | 9 | 14 |
可通过如下sql语句得到此效果
SELECT t.productname,
max(s1) 开发部评分,
max(s2) 调查部评分,
max(s3) 市场部评分,
max(s1)+max(s2)+max(s3) 总分
FROM (
SELECT productname,departname,
if(departname='开发部',sum(score),0) s1,
if(departname='调查部',sum(score),0) s2,
if(departname='市场部',sum(score),0) s3
FROM score
GROUP BY productname,departname
)t GROUP BY t.productname;