count函数

记得工作的时候自己笔记过一个count(*),count(列名) 的区别

不过当时不知道怎么想的,也只是知道count(*)会默认的对第一列进行计数,而后面的则是对指定的字段进行计数。

于昨晚看到《SQL完全学习手册》中的汇总部分,突然发现自己当时写的居然是我自己不知道的。

下面为今天的测试:

select * from m;
go
select COUNT(*)as a ,COUNT(matid) as b ,COUNT(lid) as c from m;
go


--结果如下:
matid qty lid mname
----------- ----------- ----------- --------------------
10011 1 101 北京
20012 1 102 太原
10011 1 102 太原
10011 1 102 太原
10012 2 NULL 北京
NULL 1 101 北京

(6 行受影响)

a b c
----------- ----------- -----------
6 5 5
警告: 聚合或其他 SET 操作消除了 Null 值。

(1 行受影响)

这样看来COUNT确实把NULL的值去掉了。其实是书上是这么说的,如果count之中有null值,指定的列名是不计算为空部分的。

此外还有avg求平均值的等函数使用时候需要注意。

原文地址:https://www.cnblogs.com/zerocc/p/2250993.html