sql中奇怪的sum(1),sum(2),count(1),count(6),count(*):统计总数-华盟网

sql中奇怪的sum(1),sum(2),count(1),count(6),count(*):统计总数

华盟学院山东省第二期线下学习计划

sql的统计函数 sql统计函数有 count 统计条数,配合group用 sum 累加指定字段数值但注意sum(1)就特殊 sum(1)等同于count(*) sum(1)统计个数,功能和count(*)一样,但效率上count(*)高。所以尽量少用。

举个小例子

SELECT ad_network_id,,sum(1),count(*),sum(2),count(5) from mapping_table_analytics GROUP BY ad_network_id

运行结果为:

3 123 123 123 246 5 38 38 38 76 可以看出sum(1),count(1),count(2),count(*)都是用来统计个数,结果一样。
而且,他们都包含NULL值的记录 比较特殊的是sum(2),会给统计结果总数乘以2.
(注意count(N)不会,和count(1)效果一样) 比如 SELECT sum(2) from mapping_table_analytics,结果就是实际条数的2倍
同理,sum(N)就是N倍
我理解sum(N)的执行过程就是,遍历整个表,有一条记录,就执行一次加N操作,返回累加的总体结果。所以是N倍。 统计count想过滤NULL的记录 必须count(字段名):只有指定字段,才能过滤掉该字段值为NULL的记录 SELECT ad_network_id,sum(1),count(*),sum(2),count(5),count(id),count(type) from mapping_table_analytics GROUP BY ad_network_id

 

www.idc126.com

原文地址:https://www.77169.com/classical/HTML/195670.shtm

0

发表评论