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
相关推荐
DolphinDB10 小时前
集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案
数据库
IvorySQL11 小时前
PostgreSQL 技术日报 (3月10日)|IIoT 性能瓶颈与内核优化新讨论
数据库·postgresql·开源
DBA小马哥14 小时前
时序数据库是什么?能源行业国产化替换的入门必看
数据库·时序数据库
爱可生开源社区16 小时前
某马来西亚游戏公司如何从 SQL Server 迁移至 OceanBase?
数据库
小瓦码J码18 小时前
PostgreSQL表名超长踩坑记
数据库·postgresql
yhyyht18 小时前
InfluxDB入门记录(三)flux-dsl
数据库·后端
IvorySQL1 天前
PostgreSQL 技术日报 (3月9日)|EXPLAIN ANALYZE 计时优化与复制语法讨论
数据库·postgresql·开源
stark张宇2 天前
MySQL 核心内幕:从索引原理、字段选型到日志机制与外键约束,一篇打通数据库任督二脉
数据库·mysql·架构
倔强的石头_2 天前
融合数据库架构实践:关系型、JSON与全文检索的“一库多能”深度解析
数据库
星辰员2 天前
KingbaseES数据库:ksql 命令行用户与权限全攻略,从创建到删除
数据库