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

转载于:https://www.cnblogs.com/cl1024cl/p/6205375.html

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值