Postgre——count()函数统计

        数据库统计数据量时常常用的是count(1)或者count(*),这两者区别不大,在postgres里面统计数据总量时,要注意count(column_name)与count(*)的区别,有些场景下会造成数据统计不准确的误解。

官方文档上有一段话:

For example, count(*) yields the total number of input rows; count(f1) yields the number of input rows in which f1 is non-null, since count ignores nulls; and count(distinct f1) yields the number of distinct non-null values of f1.

示例:

[postgres@localhost ~]$ psql
psql (9.2.3)
Type "help" for help.

postgres=# create table t_kenyon(id int);
CREATE TABLE
postgres=# insert into t_kenyon values(1),(2),(2),(3),(null),(null);
INSERT 0 6
postgres=# select * from t_kenyon;
 id 
----
  1
  2
  2
  3
   
   
(6 rows)

postgres=# select count(1),count(*),count(id),count(distinct id) from t_kenyon;
 count | count | count | count 
-------+-------+-------+-------
     6 |     6 |     4 |     3
(1 row)

postgres=# drop table t_kenyon;
DROP TABLE
总结: 
count(1)或者count(*)会统计所有行数,包括Null值; 
count(字段)会对Null值去掉统计; 
count(distinct column)则会对非Null字段进行去重统计

转载于:https://my.oschina.net/u/1047712/blog/177408

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值