Mysql COUNT() 函数详解

ops/2024/11/13 14:20:57/

Mysql COUNT 函数详解

  • COUNT() 的几种用法
    • COUNT(*)
    • COUNT(1)
    • COUNT(column)
    • COUNT(*) 与 GROUP BY
    • COUNT(*) 与 GROUP BY 和 HAVING
  • COUNT(expr) 的用法
    • COUNT(DISTINCT expr)
    • COUNT(expr) 带条件查询
  • 写在最后

在使用Mysql的时候,作为开发者,聚合函数是肯定会用到的,下面就来说说我们常用到的统计行数的聚合函数 COUNT()。

COUNT() 的几种用法

说到COUNT() 函数,最常用的几种方法就是 COUNT(*) 、COUNT(1)、 COUNT(column),那么关于这几种 COUNT() 函数的不同之处这里就来详细说说,这里提前准备一个表并填充部分数据,比如

SELECT * FROM sys_post;

在这里插入图片描述

COUNT(*)

统计表中满足条件的所有的数据行数,包括 NULL 和重复项,比如

SELECT COUNT(*) FROM sys_post;

在这里插入图片描述

COUNT(1)

COUNT(1) 和 COUNT(*) 差不多,统计表中满足条件的所有数据行数,包括 NULL和重复项,比如

SELECT COUNT(1) FROM sys_post;

在这里插入图片描述

COUNT(column)

COUNT(column) 统计列名会统计满足条件的所有数据行数,不包括指定列名为 NULL的数据,比如

SELECT COUNT(create_by) FROM sys_post;

在这里插入图片描述

COUNT(*) 与 GROUP BY

这里统计不同 create_by 的数据行数,比如

SELECT create_by,COUNT(*) FROM sys_post GROUP BY create_by;

在这里插入图片描述

COUNT(*) 与 GROUP BY 和 HAVING

这类统计不同create_by 的数据行数,并筛选出 COUNT(*) > 1 的数据,比如

SELECT create_by,COUNT(*) FROM sys_post GROUP BY create_by HAVING COUNT(*)>1;

在这里插入图片描述

COUNT(expr) 的用法

COUNT(expr) 表示COUNT 统计带条件的指定列的数据

COUNT(DISTINCT expr)

统计指定字段去重后的数据行数,这里不会统计该字段为 NULL 的数据,同时对于该字段相同数值只统计一次,比如

SELECT COUNT(DISTINCT post_sort) FROM sys_post;

在这里插入图片描述

由于原始数据中有两个 post_port = 1 的数据,因此去重统计时会只统计一次。另外就是 COUNT(DISTINCT post_sort) 不会统计该列值为 NULL 的数据,比如这里去重统计 create_by

SELECT COUNT(DISTINCT create_by) FROM sys_post;

在这里插入图片描述

这是因为表中数据 create_by 只有 admin 和 NULL 两种数据,不统计 NULL 数据,去重后就只剩下数字 1 了。

COUNT(expr) 带条件查询

这里有一个场景,就是需要统计 create_by 不是 admin ,那么就需要用到 COUNT(expr) 中的条件了,首先给表 sys_post 增加两条数据,增加数据后如下
在这里插入图片描述

统计 create_by 不是 admin 的数据行数,如下

SELECT COUNT(if(create_by != 'admin',1,null)) FROM sys_post;

在这里插入图片描述

这里实际就是 COUNT(create_by) ,那么指定列字段的统计,不会计算 NULL 的数据,根据条件 create_by != ‘admin’ 计算得出就是只有 create_by 是 cc 、dd的两条数据了。
上面的查询语句也可以这样更改

SELECT COUNT(CASE WHEN create_by != 'admin' THEN 1 END) FROM sys_post;

查询结果是一样的效果
在这里插入图片描述

写在最后

以上就是Mysql 统计数据时常用到的 COUNT() 函数的几种场景,大家有需要的可以参考。


http://www.ppmy.cn/ops/133048.html

相关文章

第三十六章 Vue之路由重定向/404页面设置/路径模式设置

目录 一、路由重定向 1.1. 使用方式 1.2. 完整代码 1.2.1. main.js 1.2.2. App.vue 1.2.3. index.js 1.2.4. Search.vue 1.2.5. Home.vue 1.3. 运行效果 二、设定404错误页面 2.1. 使用方式 2.2. 完整代码 2.2.1. index.js 2.2.2. NotFound.vue 2.2.3. 运行效…

[每周一更]-(第122期):模拟面试|数据库面试思路解析

10|数据库索引:为什么 MySQL 用 B+ 树而不用 B 树? 为什么 MySQL 用 B+ 树而不用 B 树? 什么是覆盖索引? 什么是聚簇索引/非聚簇索引? 什么是哈希索引?MySQL InnoDB 引擎怎么创建一个哈希索引? 什么回表?如何避免回表? 树的高度和查询性能是什么关系? 什么是索引最左…

深入浅出rust内存对齐

在 Rust 中,内存对齐是一个重要的概念,它涉及到数据在内存中的存储方式,以及如何优化内存访问的效率。往往一门语言的内存布局以及对齐方式决定了一门语言的性能,因此学会并深入理解rust中内存布局会让我们写出高性能的rust代码&a…

高级java每日一道面试题-2024年10月28日-RabbitMQ篇-RabbitMQ的使用场景有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: RabbitMQ的使用场景有哪些? 我回答: RabbitMQ是一个开源的消息代理和队列服务器,它遵循高级消息队列协议(AMQP)。RabbitMQ的核心作用是作为应用程序之间的中介,实现异步消息传递。它…

【系统架构设计师-2024下半年真题】案例分析-参考答案及部分详解(完整回忆版)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 材料一【问题1】(14分)【问题2】(11分)材料二【问题1】(10分)【问题2】(6分)【问题3】(9分)材料三【问题1】(13分)【问题2 】(8分)【问题3 】(7分)材料四【问题1】(6分)【问题2】(12分)【问题3…

SpringBoot赋能的共享汽车业务管理系统

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

数值优化 | 图解牛顿法、阻尼牛顿法与高斯牛顿法(附案例分析与Python实现)

目录 0 专栏介绍1 引例2 牛顿迭代法3 阻尼牛顿法4 高斯牛顿法5 案例分析与Python实现5.1 牛顿法实现5.2 阻尼牛顿法实现5.3 高斯牛顿法实现5.4 案例分析 0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实…

《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项

《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项 《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项套接字可选项和 I/O 缓冲大小套接字多种可选项getsockopt & setsockoptSO_SNDBUF & SO_RCVBUF SO_REUSEADDR发生地址绑定…