Postgre——count()函數統計

        數據庫統計數據量時經常用的是count(1)或者count(*),這二者區別不大,在postgres裏面統計數據總量時,要注意count(column_name)與count(*)的區別,有些場景下會形成數據統計不許確的誤解。 sql

官方文檔上有一段話: 數據庫

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.
post

示例: spa

[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字段進行去重統計
相關文章
相關標籤/搜索