mysql如何分类统计数量
比如我表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如何分类统计数量的更多相关文章
- linux mysql添加、删除用户、用户权限及mysql最大字段数量
1. 登录: mysql -u username -p 显示全部的数据库: show databases; 使用某一个数据库: use databasename; 显示一个数据库的全部表: show ...
- Java 感知Mysql存储过程变量数量
在项目中,可能会遇到sybase 移植到 mysql的情况,因为sybase 支持存储过程的可变参数,而mysql不能支持,所以,在调用mysql的时候,需要感知存储过程到底有几个参数,来合理的配置参 ...
- MySql 在大数量的统计中具体的使用技巧
一.CASE WHEN THEN ELSE END 使用用法. 在用sql语句统计某字段的某种状态的出现的次数,可以考虑用到 CASE WHEN THEN ELSE END 使用用法.当数据量过于庞大 ...
- MYSQL查询男女数量的存储过程
存储过程代码: BEGIN IF sex_id =0 THEN SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO sex_co ...
- mysql获取分类数量
1.sql <select id="getTypeNum" resultType="TypeNum" > select count(*) as al ...
- Mysql 查询表字段数量
select count(*) from information_schema.`COLUMNS` where TABLE_SCHEMA='dbName' -- 数据库名 and TABLE_NAME ...
- 深入浅出MySQL 数据库开发、优化与管理维护(第2版) -- 读书笔记 -- 基础篇
1.切换数据库 use blog; 2.显示当前数据库 所有的表. show tables; +----------------+ | Tables_in_blog | +------------ ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- Zabbix监控mysql performance
介绍 zabbix监控mysql性能,使用zabbix自带的mysql监控模板,可以监控以下内容OPS(增删改查).mysql慢查询数量.mysql请求\响应流量带宽 配置 新建mysql监控用户 G ...
随机推荐
- python笔记33-python3连mysql增删改查
前言 做自动化测试的时候,注册了一个新用户,产生了多余的数据,下次用同一账号就无法注册了,这种情况该怎么办呢? 自动化测试都有个数据准备和数据清理的操作,如果因为此用例产生了多余的数据,就需要数据清理 ...
- Linux学习19-gitlab配置邮箱postfix(新用户激活邮件)
前言 gitlab新增新用户有两种方式,第一种可以用户主动注册(自己设置密码):第二种也可以通过root管理员用户直接添加用户,发个邮件到用户的邮箱里,收到邮件后激活. 如果是第二种方式添加新用户的话 ...
- Java实现bt文件下载、制作、解析、磁力链接
首先torrent里面肯定携带的有一些信息,所以就需要我们来解析这些信息. 我们这里做多文件制作torrent,所以首先要针对每一个文件建一个实体类 import java.util.List; pu ...
- 解决Installation error: INSTALL_FAILED_VERSION_DOWNGRADE错误
Installation error: INSTALL_FAILED_VERSION_DOWNGRADE 说明你手机里已经装的软件版本比你要安装的软件版本要高,所以不能安装. 你只要删除你安装的应用便 ...
- 离线环境下使用二进制方式安装配置Kubernetes集群
本文环境 Redhat Linux 7.3,操作系统采用的最小安装方式. Kubernetes的版本为 V1.10. Docker版本为18.03.1-ce. etcd 版本为 V3.3.8. 1. ...
- 服务器主机上RAID Controller的Read Ahead Policy
RAID控制器(卡)会根据Read Ahead Policy 来决定是否只读取应用程序所请求的一块数据, 还是从硬盘上读取整个stripe. 这个policy会对读的性能产生影响. No Read A ...
- 求通俗讲解下tensorflow的embedding_lookup接口的意思
https://www.zhihu.com/question/48107602 作者:王凯链接:https://www.zhihu.com/question/48107602/answer/15980 ...
- 详细解读简单的lstm的实例
http://blog.csdn.net/zjm750617105/article/details/51321889 本文是初学keras这两天来,自己仿照addition_rnn.py,写的一个实例 ...
- 谢宝友:会说话的Linux内核
我们本次开源专访的对象是一位认真钻研技术的工程师,谢宝友,他目前任职中兴通讯操作系统团队,他个人在业余时间前后共花费了6年时间完成了对Linux内核Linux 2.6.12内核源代码注释工作. 我们本 ...
- MySQL数据复制到其他主机时报错
问题1: MySQL server has gone away With statement 原因:SQl insert 插入的语句天长导致 问题2:mysql a bulk size specifi ...