当前位置:   article > 正文

sql分组去重计数distinct&count&group by_sql distinct count

sql distinct count

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)
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
插入猜测是数据:
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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
最终表中数据记录如图所示:

在这里插入图片描述

distinct 关键字使用

select distinct * from test
  • 1

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

select distinct B from test
  • 1

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

select distinct B, C from test
  • 1

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

count()函数使用

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/929502
推荐阅读
相关标签
  

闽ICP备14008679号