Oracle count

 Sun 20 September 2020   In 数据库   :)

content

COUNT 和其他比如AVG的聚合函数对于NULL的处理不同

-- COUNT(*) 以记录(row)为单位,(包含空)
-- COUNT(1) 等价于COUNT(*)
-- COUNT(2) 等价于COUNT(*), 可以认为是别名,实际执行的还是COUNT(*) [底层优化器会把这些都识别成COUNT(*)一样的含义]
-- COUNT(fieldName) 以字段值为单位,统计非空的
-- DISTINCT 非空和去重

SELECT COUNT(*) FROM A_TEST
UNION ALL
SELECT COUNT("name") FROM A_TEST
UNION ALL
SELECT COUNT(1) FROM A_TEST
UNION ALL
SELECT COUNT(2) FROM A_TEST

reference

http://sql.standout-dev.com/2017/01/count-vs-count1-again/