-- ----------------------------
-- Table structure for a
-- ----------------------------

DROP TABLE IF EXISTS `a`;
CREATE TABLE `a` (
  `type` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `val` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of a
-- ----------------------------

INSERT INTO `a` VALUES ('x', 'A', '1');
INSERT INTO `a` VALUES ('x', 'B', '2');
INSERT INTO `a` VALUES ('x', 'C', '2');
INSERT INTO `a` VALUES ('x', 'A', '4');
INSERT INTO `a` VALUES ('y', 'B', '5');
INSERT INTO `a` VALUES ('y', 'C', '5');
INSERT INTO `a` VALUES ('y', 'D', '5');
INSERT INTO `a` VALUES ('z', 'A', '8');
INSERT INTO `a` VALUES ('z', 'B', '9');
INSERT INTO `a` VALUES ('x', 'C', '1');
INSERT INTO `a` VALUES ('x', 'D', '2');
INSERT INTO `a` VALUES ('y', 'D', '3');
INSERT INTO `a` VALUES ('y', 'D', '4');
INSERT INTO `a` VALUES ('z', 'C', '5');
INSERT INTO `a` VALUES ('z', 'C', '6');
INSERT INTO `a` VALUES ('z', 'C', '2');
INSERT INTO `a` VALUES ('z', 'A', '4');

SQL语句

-- 序号、排名
select @rownum:=@rownum+1 xh,a.name,a.val,
if(@lastVal=a.val,@rank,@rank:=@rownum)pm,@lastVal:=a.val
from  a,(select @rownum:=0,@rank:=0,@lastVal:=null) b ORDER BY a.val;
-- 统计为行
select type,name,sum(val) from a GROUP BY a.type,a.name;
-- 统计为行列
select t.type,if(t.name='A',t.sl,0)A,if(t.name='B',t.sl,0)B,if(t.name='C',t.sl,0)C,if(t.name='D',t.sl,0)D from
(select type,name,sum(val)sl from a GROUP BY a.type,a.name)t;
-- 行转列,方式1
select t1.type,sum(A) sumA,sum(B) sumB,sum(C) sumC,sum(D) sumD from
(select t.type,if(t.name='A',t.sl,0)A,if(t.name='B',t.sl,0)B,if(t.name='C',t.sl,0)C,if(t.name='D',t.sl,0)D from
(select type,name,sum(val)sl from a GROUP BY a.type,a.name)t)t1 group by t1.type;
-- 行转列,方式2
select t.type,sum(if(t.name='a',t.sl,0)) sumA,sum(if(t.name='b',t.sl,0)) sumB,sum(if(t.name='c',t.sl,0)) sumC,sum(if(t.name='d',t.sl,0)) sumD from
(select type,name,sum(val)sl from a GROUP BY a.type,a.name)t group by t.type;

 结果图片

MySQL,排序,统计行转列的更多相关文章

  1. mysql 中实现行变列

    前言: mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都有使用 ...

  2. MySQL、DM 行转列及字段去重(Group_Concat())

    最近在使用数据库迁移适配,由MySQL 库迁移到达梦数据库,其中进行行转列时,MySQL转换达梦sql语法有些问题,特记录. 在MySQL 下有Group_Concat(expr)  ,在达梦及神通数 ...

  3. SQL 分组统计 行转列 CASE WHEN 的使用

    原文地址:http://blog.itpub.net/26451903/viewspace-733526 原文在分组统计部分  sql是有问题的     本文已将sql改正   已用红色标记  Cas ...

  4. mysql中的行转列

    //查看当前商品库存 function checkProductStock($product_id){ global $wpdb; $sql="SELECT post_id,max(if(( ...

  5. 【转】MySQL存储过程中使用动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  6. MySQL存储过程的动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

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

      -- ---------------------------- -- Table structure for `TabName` -- ---------------------------- D ...

  8. MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用

    在统计查询中,经常会用到count函数,这里是基础的 MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用 -- 创建表 CREATE TABLE `tb ...

  9. 关于MySQL的行转列的简单应用(二)---group函数

    MySQL的行转列.列转行.连接字符串  concat.concat_ws.group_concat函数用法使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一 ...

随机推荐

  1. AVSampleBufferDisplayLayer----转

    http://blog.csdn.net/fernandowei/article/details/52179631 目前大多数iOS端的视频渲染都使用OpenGLES,但如果仅仅为了渲染而不做其他的例 ...

  2. mongoDB3.0 索引 整理

    http://blog.csdn.net/louisliaoxh/article/details/51543552 相关mongo http://blog.csdn.net/LOUISLIAOXH/a ...

  3. 【java基础】成员变量和局部变量02

    成员变量和局部变量(2) 成员变量的初始化和内存中的运行机制         当系统加载类或者创建类的实例的时候,系统会自动为成员变量分配内存空间,并自动指定初始值. package object; ...

  4. HBase 的表结构

    HBase 的表结构 2016-10-13 杜亦舒 HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的 关系型数据库的表 ...

  5. Android Studio安装和配置(个人研究,有错请指导)

    安装Android Studio的原因:公司有app开发者,然而公司没有测试,只好互相测试,本人并没有接触过app开发,纯小白: 自己试着安装了一下Android Studio来这里记录并分享遇到的问 ...

  6. iOS —— 字典遍历排序

    字典NSDictionary一般的遍历方法都是: NSArray* arr = [yourdictonary allKeys]; for(NSString* str in arr) { NSLog(& ...

  7. Load Runner录制C/S客户端

    1.    打开应用程序 2.    点击如下菜单 弹出窗口如下 3.    点击New,弹出窗口如下,选择Web(HTTP/HTML) 4.    点击Create,弹出窗口 5.    点击OK, ...

  8. Linux FTP的安装与配置

    Linux FTP的安装与配置   ftp安装部分,操作步骤如下: 可以使用yum命令直接安装ftp # yum install vsftpd ftp服务的开启与关闭命令: 开启:# service  ...

  9. jquery 跨域访问问题 转

    http://zld406504302.iteye.com/blog/1677937 服务器,jsp <%@ page language="java" contentType ...

  10. Java—泛型

    泛型是JDK 5 中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型.泛型本质是参数化类型,也就是所操作的数据类型指定为一个参数. 假定我们有这样一个需求: ...