比如我表test里面有id,mc,xh三个字段(分别是自动编号,钢材名称(若干种),钢材型号(大号,中号,小号))

id    mc            xh
钢管 大号
铜管 大号
铁管 小号
铝管 中号
钢管 小号

我现在要分别统计出“mc”里面的各种型号的东西有多少。意思是:
我要统计钢管,铜管,铁管,铝管的大,中,小号各有多少条记录。

并且mc里面的是不固定的,可能还有金管,还有熟料管什么的,,但是xh里面只有三种情况,那就是大号,中号,小号:

1.在mysql中建立一个测试数据表

CREATE TABLE `tb_test_count` (
`id` bigint(20) NOT NULL,
`mc` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
`xh` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

2.插入一批数据

INSERT INTO tb_test_count VALUES(1,'钢管','大号');
INSERT INTO tb_test_count VALUES(2,'铜管','大号');
INSERT INTO tb_test_count VALUES(3,'铁管','小号');
INSERT INTO tb_test_count VALUES(4,'铝管','大号');
INSERT INTO tb_test_count VALUES(5,'铝管','小号');
INSERT INTO tb_test_count VALUES(6,'钢管','大号');
INSERT INTO tb_test_count VALUES(7,'钢管','小号');

3.查询统计的SQL语句

select mc,count(case when xh='大号' then 1 end) as 大号,
count(case when xh='中号' then 1 end) as 中号,
count(case when xh='小号' then 1 end) as 小号
from tb_test_count
group by mc

4.查询结果截图如下:

5.如果使用sum方法查询则(当数据一条都不存在的时候查询出来的结果是null)

select mc,sum(case when xh='大号' then 1 end) as 大号,
sum(case when xh='中号' then 1 end) as 中号,
sum(case when xh='小号' then 1 end) as 小号
from tb_test_count
group by mc

当一个表中需要统计某个字段中不同类型的数据条数的时候,可以使用该方法。

mysql如何分类统计数量的更多相关文章

  1. linux mysql添加、删除用户、用户权限及mysql最大字段数量

    1.  登录: mysql -u username -p 显示全部的数据库: show databases; 使用某一个数据库: use databasename; 显示一个数据库的全部表: show ...

  2. Java 感知Mysql存储过程变量数量

    在项目中,可能会遇到sybase 移植到 mysql的情况,因为sybase 支持存储过程的可变参数,而mysql不能支持,所以,在调用mysql的时候,需要感知存储过程到底有几个参数,来合理的配置参 ...

  3. MySql 在大数量的统计中具体的使用技巧

    一.CASE WHEN THEN ELSE END 使用用法. 在用sql语句统计某字段的某种状态的出现的次数,可以考虑用到 CASE WHEN THEN ELSE END 使用用法.当数据量过于庞大 ...

  4. MYSQL查询男女数量的存储过程

    存储过程代码: BEGIN IF sex_id =0 THEN SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO sex_co ...

  5. mysql获取分类数量

    1.sql <select id="getTypeNum" resultType="TypeNum" > select count(*) as al ...

  6. Mysql 查询表字段数量

    select count(*) from information_schema.`COLUMNS` where TABLE_SCHEMA='dbName' -- 数据库名 and TABLE_NAME ...

  7. 深入浅出MySQL 数据库开发、优化与管理维护(第2版) -- 读书笔记 -- 基础篇

      1.切换数据库 use blog; 2.显示当前数据库 所有的表. show tables; +----------------+ | Tables_in_blog | +------------ ...

  8. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  9. Zabbix监控mysql performance

    介绍 zabbix监控mysql性能,使用zabbix自带的mysql监控模板,可以监控以下内容OPS(增删改查).mysql慢查询数量.mysql请求\响应流量带宽 配置 新建mysql监控用户 G ...

随机推荐

  1. svn: E155015: 提交失败(细节如下) 解决办法

    svn 出现冲突是经常发生的事,最近改用命令操作svn,用界面电脑有些反应慢 出现冲突使用svn 命令肯定也是可以解决的: 查看警告信息提示冲突的文件,执行 svn resolved <文件名& ...

  2. 用FadingActionBar实现有头图的ActionBar

         FadingActionBar这个开源项目在社区上很火,感觉Google I/O 2014中就有它的身影.今天我们来介绍下这个实用的开源项目. 首先是到这里(https://github.c ...

  3. FrameLayout和handle实现霓虹灯效果

    这个程序的主要思想就是在一个FrameLayout中定义多个TextView,分别设置不同的背景色.因为帧布局的特性,所以这些控件都是叠加起来的.然后,通过定时器循环给handler发送消息,改变控件 ...

  4. springboot 表单校验

    实体: @Entity public class User implements Serializable { /** * 编号 */ @Id @GeneratedValue private Long ...

  5. C# 访问操作注册表整理

    一..net注册表操作简介 .net中Registry 类,RegistryKey 类提供了操作注册表的接口 RegistryValueKind,用于指定操作注册表的数据类型. 二.使用实例 //获取 ...

  6. mac下的docker的Docker.raw占用空间很大?

    如图所示,60G,我的天呢? 其实这个只是系统分配给docker的逻辑硬盘大小,应该是指docker最大可用的硬盘空间,实际占用没有这么大 实际占用大小: 另外: 参考:https://github. ...

  7. 5.2 dubbo-compiler源码解析

    ExtensionLoader<Protocol> loader = ExtensionLoader.getExtensionLoader(Protocol.class); final P ...

  8. go语言之进阶篇正则表达式

    正则表达式是一种进行模式匹配和文本操纵的复杂而又强大的工具.虽然正则表达式比纯粹的文本匹配效率低,但是它却更灵活.按照它的语法规则,随需构造出的匹配模式就能够从原始文本中筛选出几乎任何你想要得到的字符 ...

  9. mysql-5.7.18解压版启动mysql服务

    1.下载mysql社区版 2.解压到D:\Program Files 3.在D:\Program Files\mysql-5.7.18-winx64\bin下,新建文件my.ini,内容如下: [cl ...

  10. EF6源码学习-准备篇

    现在对于.net开发人员来说EF已经很流行了,虽然我在2010年的时候就用过EF,也看过几本书,但是还没有仔细研究EF的code, 曾经也尝试阅读EF5的源代码,后来由于时间关系也没有坚持住.现在计划 ...