sql中奇怪的sum(1),sum(2),count(1),count(6),count(*):統計總數,sumcount

來源:互聯網
上載者:User

sql中奇怪的sum(1),sum(2),count(1),count(6),count(*):統計總數,sumcount
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_analyticsGROUP BY ad_network_id

運行結果為:

3   123 123 123 2465   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_analyticsGROUP BY ad_network_id

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.