zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    bzoj 1084: [SCOI2005]最大子矩阵
    Python之深浅拷贝
    2,版本控制git --分支
    1,版本控制git--仓库管理
    python-openpyxl操作excel
    ansible-3
    ansible-2
    ansible-1
    celery
    6,MongoDB 之 Array Object 的特殊操作
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205375.html
Copyright © 2011-2022 走看看