sql分组去重计数distinctcountgroup by

news2025/6/22 18:37:47

count 可以与 distinct 连用,这样可以实现去重计数;加上group by 可实现按某个字段分组,而对其它字段进行去重计数

学习链接

count()和distinct关键字的使用

distinct关键字

distinct关键字是用于去除重复的数据记录。distinct使用情况:

(1)select distinct * 情况

当distinct和*号结合使用时候,只有当所有字段都一模一样时候,才会去除重复记录,只保留一条。

(2)select distinct 列名1,列名2,…,列名n 情况

当指定列名后,只有指定的列名字段全部值全部相同时候,才会去除重复的记录,只保留一条。

注意

distinct关键字只能放在所有字段前面,不能在某个字段之后

count()函数

count()是SQL中提供的用于统计记录数量的函数。下面介绍count()函数常见用法:

  • count(*):统计记录总数,包含重复的记录,以及为NULL或空的记录。(特殊情况:mysql允许某一行数据的所有列都是null,这时使用count(*),也是会把这一行全是null的数据算进去的)
  • count(1):根据第一列统计记录总数,包含重复的记录,包含为NULL或空的值。也可以使用count(2)、count(3)等等。
  • count(列名):根据指定列统计记录总数,包含重复的记录,不包括指定列为NULL或空的值。
  • count(distinct 列名):根据指定的列统计记录总数,不包含重复的记录,不包括NULL或空的值。(还可以同时配合group by在分组后,对每个分组作去重统计)

测试案例

准备

创建一个test数据表用于测试。
create table test (
    id varchar(15),
    a  varchar(20),
    b  varchar(20),
    c  varchar(20)
)
插入猜测是数据:
insert into test values('1', 'a11', 'b11', 'c11');
insert into test values('2',  'a22', 'b22', 'c2');
insert into test values('3',  'a33', 'b33', 'c33');
insert into test values('4',  'a44', 'b44', 'c44');
insert into test values('5',  'a55', 'b55', 'c55');
insert into test values('', 'a55', 'b55', 'b66');
insert into test values(null,  'a11', null, 'c11');
insert into test values(null, null, null, null);
最终表中数据记录如图所示:

在这里插入图片描述

distinct 关键字使用

select distinct * from test

在这里插入图片描述
由于没有完全相同的记录,所以查询出来的数据还是8条。

select distinct B from test

在这里插入图片描述
字段B中存在相同的值,所以distinct会去除重复的记录。

select distinct B, C from test

在这里插入图片描述
distinct去重多列时候,只有两条记录所有列的值全部相同才会去重。

count()函数使用

select count(*) from test  -- 8条记录

在这里插入图片描述

select count(1) from test -- 8条记录

在这里插入图片描述

select count(id) from test  -- 5条记录

在这里插入图片描述
由于ID列,有三个为空的值,所以count(ID)后,统计结果等于5。

select count(distinct B) from test  -- 5条记录

在这里插入图片描述
去重然后统计B字段这一列总记录数。由于B列有两个为空,两条记录重复,所以去重,并且去掉为空的的,最终记录总数为5。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1086405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

09_Webpack打包工具

1 初识Webpack 1.1 什么是Webpack Webpack打包工具对项目中的复杂文件进行打包处理,可以实现项目的自动化构建,并且给前端开发人员带来了极大的便利。 目前,企业中的绝大多数前端项目是基于Webpack打包工具来进行开发的。 1.2 Webpack的安…

ChatGPT,AIGC 数据库应用 Mysql 常见优化30例

使用ChatGPT,AIGC总结出Mysql的常见优化30例。 1. 建立合适的索引:在Mysql中,索引是重要的优化手段,可以提高查询效率。确保表的索引充分利用,可以减少查询所需的时间。如:create index idx_name on table_name(column_name); 2. 避免使用select * :尽可能指定要返回的…

拼多多商品品牌数据采集接口,拼多多商品详情数据接口,拼多多API接口

拼多多商品品牌数据采集的方法如下: 手动数据采集。直接在拼多多平台上搜索并手动复制商品数据,适合采集小批量的商品数据。自动数据采集。通过爬虫来自动获取,具体步骤如下: 选择爬虫框架并安装。Python爬虫框架有很多&#xf…

计算机毕业设计选什么题目好?springboot 校园失物招领平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

发布npm包质量分测试

查询质量分接口 https://registry.npmjs.org/-/v1/search?textcanvas-plus v0.0.1 quality 0.2987 新建文件夹 canvas-plus 执行命令 npm init 生成package.json {"name": "3r/canvas-plus","version": "0.0.1","descript…

EXCEL——根据单元格值设置不同色阶

方法:开始—>条件格式—>色阶(默认色阶或复杂色阶)。 一、默认色阶 如图,可选择自定义的色阶模式。 二、复杂色阶 1、如图,点击"其他规则" 2、选择复杂格式 此时可以看到,支持多种格式…

uniapp 使用和引入 thorui

1. npm install thorui-uni 2. "easycom": { "autoscan": true, "custom": { "tui-(.*)": "thorui-uni/lib/thorui/tui-$1/tui-$1.vue" } }, 3.

spring boot RabbitMq基础教程

RabbitMq 由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不同语言的客户端。 但是,RabbitMQ官方提供的Java客户端编码相对复杂,一般…

如何看待国内PMP考试通过率高达97%?

自认为是虚高,虽然中国人在考试方面的确独树一帜的强,应该也没有这样夸张。 我分析,因为报考的条件有一个“由PMI项目管理协会授权的培训机构开具35学时证明”,这样,就都不得不去报培训班,但大家都知道有可…

Qual+Android方案Unlock学习 以Oneplus7Pro为例

目录 背景 Unpack guacamole_21_H.04_190416.ops Unlock探究 开发者选项–允许解锁 fastboot oem unlock extract LinuxLoader from abl 过程分析 FH读写分区 逆向MSM Download USB抓包 token & pk 逆向结果 尝试修改分区实现unlock VerifiedBoot Protocol 分…

Spring-事务源码解析2

上一篇文章我们介绍了事务开启注解EnableTransactionManagement源码解析《Spring-事务源码解析1》 里面提到了2个关键组件,这里我们分析下Spring如何利用这2个组件来给Bean创建代理对象。 文章待整理 先说下执行流程,当请求进来的时候,会执…

TensorFlow入门(二十五、单个神经元的扩展——Maxout网络)

Maxout网络的原理 Maxout是Goodfellow在2013年提出的一个新的激活函数,与其它的激活函数相比,Maxout是需要参数的,且参数可以通过网络的反向传播得到学习,因此它比其它激活函数有着更好的性能,理论上可以拟合任意凸函数,进而使得网络取得更好的性能。 Maxout网络主要是扩展单个…

移动app广告变现,对接广告联盟还是选择第三方聚合广告平台?

作为互联网广告的载体,APP天生就比线下传统广告位更具优势,不受地域限制可以辐射到地球上的每一个角落,可以让广告获得更广的覆盖面。通过丰富的广告形式,精准的目标用户画像,也可以更好地实现品牌广告或效果广告的投放…

主流大模型训练库和框架的介绍

文章目录 前言1.主流大模型框架介绍 前言 参考: Pytorch训练模型损失Loss为Nan或者无穷大(INF)原因 1.主流大模型框架介绍

模拟电路基础知识经典 200问,收藏这些就够了!

大家总说模电知识总是学不会,IC修真院为大家整理了模电经典200问,看看你掌握了多少,文末可以获取全部哦。 文末可领全部文档 1、半导体材料制作电子器件与传统的真空电子器件相比有什么特点? 答:频率特性好、体积小、功耗小&…

CDN加速服务:网站快递服务

原始服务器:网站的储藏库 想象一下,CDN加速服务的旅程从原始服务器开始,这个服务器就像是一个巨大的储藏库,通常藏身于数据中心或云服务提供商的服务器中。这里存放着网页、图片、视频、应用程序等静态和动态的货品。 CDN节点&…

SpringBoot整合JWT、实现登录和拦截

SpringBoot整合JWT 、实现登录和拦截 一、JWT简介1.什么是JWT2.为什么要用JWT3.传统Session认证的弊端4.JWT认证的优势5.JWT结构 二、SpringBoot整合JWT1.引入依赖2.JWT工具类3.自定义拦截器4.异常处理1.自定义异常ServiceException2.全局异常处理器3.同一封装返回结果 3.登录实…

Window10运行onnxruntime报错的处理

背景 在Windows10中安装好英伟达驱动、cuda、cudnn等资源,然后运行程序的时候,发现程序会在加载模型时崩溃。 经过一番查找后,得到输出的信息是说是缺少zlibwapi.dll。 这个问题是去年做的一个项目时发现的,忘记当时是怎么发现了…

Java标识符和关键字,Java常量的定义和分类

任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍 java 的标识符、关键字和保留字。 标识符 Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下。 标识符由数…

Go的运算符解密:探索计算的奥秘

目录 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 其他运算符 运算符优先级 代码示例 更多关于Go的相关技术点,敬请关注公众号:CTO Plus后续的发文,有问题欢迎后台留言交流。 原文:Go的运算符解密:…