创建一个测试表

 IF OBJECT_ID( 'dbo.T1' , 'U'
)IS NOT NULL
BEGIN
DROP TABLE dbo.T1;
END;
GO
CREATE TABLE dbo.T1( column_1 int ,column_2 varchar(30));
GO INSERT INTO dbo.T1( column_1 , column_2 )
VALUES( 1 , '') , ( 2 , '') , ( 3 , ''); INSERT INTO dbo.T1( column_1)
VALUES(1) , (2); INSERT INTO dbo.T1( column_2)
VALUES( ''); GO
SELECT *
FROM dbo.T1;
GO

使用各种count的方式对比结果(注意只是结果,不考虑性能,以及增加索引对于性能的影响

关于下面两者性能的对比:

SQLSERVER 里SELECT COUNT(1) 和SELECT COUNT(*)哪个性能好?

 SELECT COUNT(*)AS 'count(*)', COUNT(1)AS 'count(1)' , COUNT( column_1)AS column_1 , COUNT( DISTINCT column_1) AS column_1DISTINCT
FROM dbo.T1;
SELECT * FROM dbo.T1;

count(*) count(1) column_1 column_1DISTINCT
6 6 5 3

可以看到count(*) 和count(1)在结果上是一致的,都是包含NULL值合计。

COUNT(ALL expression) 即 COUNT( column_1),为非NULL值得合计

COUNT(DISTINCT expression) 即 COUNT( DISTINCT column_1), 去除重复值,去除NULL后的合计结果

可以等同于以下写法

 WITH groupby_CTE( columngroup)
AS (SELECT DISTINCT column_2 AS columngroup
FROM dbo.T1
WHERE column_2 IS NOT NULL
)
SELECT COUNT( *
)
FROM groupby_CTE;

MSDN 对其解释

COUNT (Transact-SQL)
COUNT(*) 返回组中的项数。                包括 NULL 值和重复项。

COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非 Null 值的数量。

COUNT(DISTINCT expression) 对组中的每一行都计算 expression 并返回唯一非 Null 值的数量。

以下是在聚合数据操作后的展现

 select column_1,count(column_1) as 'countcolumn_1',count(*) as 'count(*)'
from dbo.T1
group by column_1

column_1 countcolumn_1 count(*)
NULL 0 1
1 2 2
2 2 2
3 1 1

可以看到的NULL值并没有合计。

COUNT(*),count(1),COUNT(ALL expression),COUNT(DISTINCT expression)的更多相关文章

  1. COUNT(*),count(1),COUNT(ALL expression),COUNT(DISTINCT expression) BY Group by

    select column_2,count(column_2) as 'count(column_2)' ,count(column_1) as 'count(column_1)' ,count(*) ...

  2. 【mysql】count(*),count(1)与count(column)区别

    https://blog.csdn.net/lzm18064126848/article/details/50491956 count(*)对行的数目进行计算,包含NULL count(column) ...

  3. 查找数据库中重复的值的数据,having的使用,count(1),sum等聚会函数

    通过having代替where来使用count(1),sum()等函数.譬如如下数据id value1 21 32 33 53 6 可以写个语句统计value的分组 在这里,可以省略前面的sum(va ...

  4. entity framework 新手入门篇(3)-entity framework实现orderby,count,groupby,like,in,分页等

    前面我们已经学习了entityframework的基本的增删改查,今天,我们将在EF中实现一些更加贴近于实际功能的SQL方法. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和 ...

  5. 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题

    1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...

  6. sql中奇怪的sum(1),sum(2),count(1),count(6),count(*):统计总数

    sql的统计函数 sql统计函数有 count 统计条数,配合group用 sum 累加指定字段数值 但注意sum(1)就特殊 sum(1)等同于count(*) sum(1)统计个数,功能和coun ...

  7. linq-to-sql实现left join,group by,count

    linq-to-sql实现left join,group by,count 用linq-to-sql实现下面的sql语句: SELECT p.ParentId, COUNT(c.ChildId) FR ...

  8. 原创 Hive count 多个度量指标,带有 distinct

    Hive  count 多个度量指标,带有  distinct ,注意点!!! 比如  select  organid, ppi, count(id1) as num1, count(distinct ...

  9. 聚合函数:sum,count,max,avg

    聚合函数:sum,count,max,avg等,一般作用于多条记录上.通过group by可以将数据对属于一组的数据起作用. SELECT region, SUM(population), SUM(a ...

随机推荐

  1. android中的一些问题

    1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚 ...

  2. jquery.blockUI.2.31.js 弹出层项目介绍

    {insert_scripts files='user.js'} <style type="text/css"> #float_login{border:1px sol ...

  3. maven安装仓库中不存在的jar包

    这里以ojdbc6.jar作为案例 首先我的ojdbc6.jar放在D盘的根目录D:\ojdbc6.jar 然后我们打开cmd命令窗口,运行命令:mvn install:install-file -D ...

  4. 1. RAID在数据库存储上的应用

    随着单块磁盘在数据安全.性能.容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks,RAID)出现了,RAID把多块独立的磁 ...

  5. Java基础--访问权限控制符

    今天我们来探讨一下访问权限控制符. 使用场景一:攻城狮A编写了ClassA,但是他不想所有的攻城狮都可以使用该类,应该怎么办? 使用场景二:攻城狮A编写了ClassA,里面有func1方法和func2 ...

  6. Python执行系统命令的方法

    Python中执行系统命令常见方法有两种: 两者均需 import os (1) os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 system(command) ...

  7. POJ 2516 Minimum Cost 最小费用流

    题目: 给出n*kk的矩阵,格子a[i][k]表示第i个客户需要第k种货物a[i][k]单位. 给出m*kk的矩阵,格子b[j][k]表示第j个供应商可以提供第k种货物b[j][k]单位. 再给出k个 ...

  8. OGG

    Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步. ...

  9. ORACLE之表

    本文章中的表在以后的例子中会用到. 首先有t_fn_person和t_fn_dept表. ) primary key not null, person_code ) not null, person_ ...

  10. MongoDB - The mongo Shell, Configure the mongo Shell

    Customize the Prompt You may modify the content of the prompt by setting the variable prompt in the  ...