19.Oracle 中count(1) 、count(*) 和count(列名) 函数的区别

count(1) and count(字段)

两者的主要区别是

  • count(1) 会统计表中的所有的记录数,包含字段为null 的记录。
  • count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。

即不统计字段为null 的记录。

count(*) 和 count(1)和count(列名)区别

执行效果上:

  • count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略为NULL的值。
  • count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略为NULL的值。
  • count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是指空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计

count()函数

1、count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除 去null以外的所有行的总数(有默认值的列也会被计入)

2、distinct 列名,得到的结果将是除去值为null和重复数据后的结果

sql 复制代码
1  -- 创建test表
 2  SQL> create table test
 3  (
 4  ename varchar2(10),
 5  sal number(4)
 6  );
 7 
 8 -- 向test表中插入数据
 9 SQL> insert into test values('fxe1',90);
10 SQL> insert into test(ename) values('fxe2');
11 SQL> insert into test(ename) values('fxe3');
12 SQL> insert into test(ename) values('fxe4');
13 SQL> insert into test values('fxe5',80);
14 SQL> insert into test values('fxe6',80);
15 
16 SQL> select * from test; -- 查询test表中的所有数据
17 ENAME      SAL
18 ---------- ----------
19 fxe1        90
20 fxe2
21 fxe3
22 fxe4
23 fxe5        80
24 fxe6        80
25 ---------- ----------26
27 SQL> select count(*) from test;  -- count(*):包含NULL,一共6条记录
28 COUNT(*)
29 ----------
30 6        
31 
32 SQL> select count(1) from test;  -- count(1):包含NULL,一共6条记录,和count(*)的结果一样
33 COUNT(1)
34 ----------
35 6       
36 
37 SQL> select count(sal) from test;  -- count(列名):不包含NULL,但包含重复值项,一共3条记录
38 COUNT(SAL)
39 ----------
40 3              
41 
42 SQL> select count(distinct sal) from test;  -- count(列名):不包含NULL,去重"count(distinct sal)",一共2条记录
43 COUNT(DISTINCTSAL)
44 ------------------
45 2              
46 
47 SQL> select distinct sal from test;
48 SAL
49 ----------
50 80
51 90
相关推荐
gma99911 分钟前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️13 分钟前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98761 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
苏-言1 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
Ljw...1 小时前
索引(MySQL)
数据库·mysql·索引
菠萝咕噜肉i1 小时前
超详细:Redis分布式锁
数据库·redis·分布式·缓存·分布式锁
长风清留扬1 小时前
一篇文章了解何为 “大数据治理“ 理论与实践
大数据·数据库·面试·数据治理
Mephisto.java1 小时前
【大数据学习 | Spark】Spark的改变分区的算子
大数据·elasticsearch·oracle·spark·kafka·memcache
OpsEye2 小时前
MySQL 8.0.40版本自动升级异常的预警提示
数据库·mysql·数据库升级
Ljw...2 小时前
表的增删改查(MySQL)
数据库·后端·mysql·表的增删查改