码迷,mamicode.com
首页 > 数据库 > 详细

Mysql 列转行统计查询 、行转列统计查询

时间:2016-01-13 20:02:30      阅读:633      评论:0      收藏:0      [点我收藏+]

标签:mysql   行转列   

    之前看过一篇博文写得非常好,看后就很容易让人理解,博文地址为:http://www.cnblogs.com/lhj588/p/3315876.html 

    最近在群里又碰到一个朋友说起,于是记录一下:

    

    假设表名为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

Mysql 列转行统计查询 、行转列统计查询

标签:mysql   行转列   

原文地址:http://happyliu.blog.51cto.com/501986/1734708

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!