Mysql 列转行统计查询 、行转列统计查询
2016-01-13 17:29
609 查看
之前看过一篇博文写得非常好,看后就很容易让人理解,博文地址为:/article/4907344.html
最近在群里又碰到一个朋友说起,于是记录一下:
假设表名为t.表里有六个字段p1,p2,p3,s1,s2,s3
现在想得到
p1=100 时s1值的总和
p2=100 时s2值的总和
p3=100 时s3值的总和
创建表:
参考答案(MYSQL行转列统计):
最后自己对比下统计是否正确
本文出自 “开心编程_永无止境” 博客,请务必保留此出处http://happyliu.blog.51cto.com/501986/1734708
最近在群里又碰到一个朋友说起,于是记录一下:
假设表名为t.表里有六个字段p1,p2,p3,s1,s2,s3
现在想得到
p1=100 时s1值的总和
p2=100 时s2值的总和
p3=100 时s3值的总和
创建表:
CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `s1` int(11) DEFAULT NULL, `s2` int(11) DEFAULT NULL, `s3` int(11) DEFAULT NULL, `p1` int(11) DEFAULT NULL, `p2` int(11) DEFAULT NULL, `p3` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf-8;添加一些数据:
insert into t value(NULL, floor(rand()%10*100),floor(rand()%10*100),floor(rand()%10*100),100,100,100);
参考答案(MYSQL行转列统计):
SELECT SUM(CASE p1 WHEN 100 THEN s1 ELSE 0 END) s1sum, SUM(CASE p2 WHEN 100 THEN s2 ELSE 0 END) s2sum, SUM(CASE p3 WHEN 100 THEN s3 ELSE 0 END) s3sum FROM `t`;
最后自己对比下统计是否正确
select sum(s1) from t where p1 = 100; select sum(s2) from t where p2 = 100; select sum(s3) from t where p3 = 100;
本文出自 “开心编程_永无止境” 博客,请务必保留此出处http://happyliu.blog.51cto.com/501986/1734708