前言mysql

最近发如今处理Mysql问题时,count()函数频繁上镜,经常出如今分组统计的情景下,可是有时候并非使用group by分好组就能够直接统计了,好比说一个常见的需求,统计每一个班级男生所占的比例,这种状况通常会按照班级分组,可是分组内不但要统计班级的人数,还要统计男生的人数,也就是说统计是有条件的,以前确实没有考虑过怎样实心,后来查询了资料,总结在这里,方便往后查找使用。sql

Mysql中count()函数的通常用法是统计字段非空的记录数,因此能够利用这个特色来进行条件统计,注意这里若是字段是NULL就不会统计,可是false是会被统计到的,记住这一点,咱们接下来看看几种常见的条件统计写法。函数

测试环境

Windows 10

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 7

Server version: 5.7.21-log MySQL Community Server (GPL)

Copyright © 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.学习

准备工做

新建一个Mysql数据表a,包含id和num两个字段

mysql> create table a(id int, num int);

Query OK, 0 rows affected (0.04 sec)测试

插入测试数据,为了看count()函数的效果,咱们插入两个空数据

mysql> insert into a values (1,100),(2,200),(3,300),(4,300),(8,null),(9,null);

Query OK, 6 rows affected (0.01 sec)

Records: 6 Duplicates: 0 Warnings: 0.net

查询表a中的数据,与后面的统计作比较blog

mysql> select * from a;

id

num

1

100

2

200

3

300

4

300

8

NULL

9

NULL

6 rows in set (0.09 sec)get

调用count()函数看效果,若是使用count(*)会查询出全部的记录数,但若是使用count(num)发现只有4条数据,num为NULL的记录并无统计上input

mysql> select count(*) from a;

count(*)

6

1 row in set (0.03 sec)it

mysql> select count(num) from a;

count(num)

4

1 row in set (0.04 sec)

条件统计

count()函数中使用条件表达式加or null来实现,做用就是当条件不知足时,函数变成了count(null)不会统计数量

mysql> select count(num > 200 or null) from a;

count(num > 200 or null)

2

1 row in set (0.22 sec)

count()函数中使用if表达式来实现,当条件知足是表达式的值为非空,条件不知足时表达式值为NULL;

mysql> select count(if(num > 200, 1, null)) from a;

count(if(num > 200, 1, null))

2

1 row in set (0.05 sec)

count()函数中使用case when表达式来实现,当条件知足是表达式的结果为非空,条件不知足时无结果默认为NULL;

mysql> select count(case when num > 200 then 1 end) from a;

count(case when num > 200 then 1 end)

2

1 row in set (0.07 sec)

总结

使用count()函数实现条件统计的基础是对于值为NULL的记录不计数,经常使用的有如下三种方式,假设统计num大于200的记录

select count(num > 200 or null) from a;

select count(if(num > 200, 1, null)) from a

select count(case when num > 200 then 1 end) from a

————————————————

本文仅供本身记录学习做用,版权归原做者全部,侵删

版权声明:本文为CSDN博主「AlbertS」的原创文章,遵循CC 4.0 BY-SA

原文连接:https://blog.csdn.net/alberts...

count 有条件 mysql_【笔记】Mysql中使用count加条件统计相关推荐

  1. mysql count 返回0_如何在MySQL中使用COUNT時返回0而不是null

    我正在使用此查詢返回存儲在$ sTable中的歌曲列表以及存儲在$ sTable2中的總項目的COUNT.如何在MySQL中使用COUNT時返回0而不是null /* * SQL queries * ...

  2. Mysql中的count()与sum()区别

    Mysql中的count()与sum()区别 首先创建个表说明问题 CREATE TABLE `result` ( `name` varchar(20) default NULL, `subject` ...

  3. mysql中的count(1)、count(*)、count(id)哪个更快?

    今天和大家聊一下mysql中的count()方法 我们日常开发中,经常会用到count()命令,有的人用count(*),有的人用count(1),还有的人用count(id),那么这几种写法都有什么 ...

  4. Mysql中使用count加条件统计

    文章目录 前言 测试环境 准备工作 条件统计 总结 前言 最近发现在处理Mysql问题时,count()函数频繁上镜,常常出现在分组统计的情景下,但是有时候并不是使用group by分好组就可以直接统 ...

  5. sqlserver建表语句_重新认识MySQL中的COUNT语句

    在数据库的增删改查操作中,使用最频繁的就是查询操作. 而在所有查询操作中,统计数量操作更是经常被用到. 关于数据库中行数统计,无论是MySQL还是Oracle亦或者是SqlServer,都有一个函数可 ...

  6. MySQL用函数统计记录总数_在mysql中使用COUNT 或者SUM函数计算记录总数

    count函数的作用 想要真正的理解count函数,我们就必须明白count函数的作用. 作用一:统计某一列非空(not null)值得数量,即统计某列有值得结果数,使用count(col),其中co ...

  7. mysql分组和where条件查询,mysql中where和having条件查询的区别

    having一般跟在group by后面,先对查询结果分组,再根据having条件,筛选满足条件的组,限制字段最好选择分组的字段,可以操纵使用聚合函数(sum().count().avg()等)的列, ...

  8. checkpoint技术mysql_认识MySQL中的Checkpoint技术

    1,checkpoint产生的背景 数据库在发生增删查改操作的时候,都是先在buffer pool中完成的,为了提高事物操作的效率,buffer pool中修改之后的数据,并没有立即写入到磁盘,这有可 ...

  9. MySQL中SQL命令语句条件查询

    一.聚合函数 聚合函数:又叫组函数,用来对表中的数据进行统计和计算,结合group by分组使用,用于统计和计算分组数据 常用聚合函数 count(col):求指定列的总行数 max(col):求指定 ...

最新文章

  1. 拥抱并行流,提高程序执行速度
  2. chubby分布式锁服务概述
  3. 最后一个 IPV4 地址分配完毕,正式向IPV6过渡!
  4. 异常:This application has no explicit mapping for /error.以及spring.mvc.view.prefix配置解决
  5. python中dir用法_Python内置函数dir详解
  6. Android之实现首尾带圆角的多颜色水平条
  7. 确认密码参数php,laravel unique验证、确认密码confirmed验证以及密码修改验证的方法...
  8. 安卓PHP maker汉化,android 百度地图marker添加自定义视图
  9. 《深入浅出DPDK》读书笔记(十四):DPDK应用篇(DPDK与网络功能虚拟化:NFV、VNF、IVSHMEM、Virtual BRAS“商业案例”)
  10. python(24)下载文件
  11. Zookeeper概念介绍
  12. Linux系统管理初步(六)设置计划任务
  13. 查看Tomcat版本
  14. xrd连续扫描和步进扫描_多晶XRD步进扫描与连续扫描介绍
  15. python画五角星代码_如何用python画一个五角星_python绘制五角形教程
  16. 图扑软件以轻量化建模构建智慧城市
  17. 防火墙工作在哪个层_数据库安全关键技术之数据库防火墙技术
  18. 上市公司股息红利差别化个人所得税政策
  19. 零基础应该怎么学剪辑,大概要学多长时间?在磨金石教育学靠谱吗?
  20. Arduino基础2

热门文章

  1. MySQL查看数据表
  2. 根据坐标如何标记图片_推荐收藏 | 一文搞定SCI论文图片
  3. python tk 当输入数值错误是报错_Python的异常处理
  4. mysql 编译cpu数量_合适MySQL的Xeon 55XX系列CPU编译参数
  5. 这 6 个 Spring Boot 项目够经典
  6. 在滴滴和头条干了 2 年后端开发,太真实…
  7. Jsoup抓取网页数据完成一个简易的Android新闻APP
  8. 【错误记录】eclipse,android,logcat日志无法打印,真机调试
  9. struts2的OGNL表达式理解(一)
  10. 桥接路由器总是掉线_多路由的无线桥接步骤