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
相关推荐
哈__1 小时前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes
IvorySQL2 小时前
IvorySQL 5.6 发布:PG 18.6 内核升级,沙盒即开即用
数据库·人工智能·postgresql
CNSSIRD数据库3 小时前
中国企业环境信用数据库2003-2026
大数据·数据库·数据分析·论文笔记
fd32004 小时前
达梦数据库更新统计信息后仍走旧执行计划解决方案
数据库
华章酱4 小时前
MySQL幻读是怎么出现的
数据库·mysql·幻读
浅念-5 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql
updayday8545 小时前
离职域账号状态变更与Ping64操作记录核对
大数据·网络·数据库·安全·智能路由器
Nturmoils5 小时前
只恢复一张表,别把整个库都还回去
数据库
龙腾AI白云6 小时前
大语言模型:从语言理解到通用智能的跃迁
数据库·人工智能·机器学习·知识图谱
SelectDB6 小时前
快手基于 Apache Doris 千亿多模态检索的实践
大数据·数据库·数据分析