COUNT() 函數返回匹配指定條件的行數。
COUNT(column_name) 函數返回指定列的值的數目(NULL 不計入):不包含值為NULL的記錄
COUNT(*) 函數返回表中的記錄數:
COUNT(DISTINCT column_name) 函數返回指定列的不同值的數目
SUM()函數,是針對表tab中,任意符合可加減的字段,進行加和。 select COUNT(CARRIER_NAME),sum(STEP_STATUS) from ACC_eLogistics..CARRIER_INFO 這個就可以求出來,這個CARRIER_NAME,一共有多少條記錄,在這記錄中STEP_STATUS的和一共是多少 (無列名) (無列名) 354 595
大多數在使用count的時候,是搭配group by 一起來使用的,
因為,count只是返回給你數量,要是僅僅是返回select count(*)/count(字段) 就可以執行成功的。
但是要是這樣select:
select count(*) ,OrderSn from tabA,那你就是想知道OrderSn在TabA中有多少條記錄,
但是OrderSn可能是一或者多個吧,為了區分開每一個OrderSn到底有多少個,那就是用Group by 進行區分
select COUNT(CONTACT_INFO) as CONTACT,ENABLED from CARRIER group by ENABLED
CONTACT ENABLED
178 0
74 1
這樣就可以看出來,在CARRIER這個表中,ENABLED有兩種情況,數量分別是178/74,這就是日常count和Group by 搭配的原因,指明具體的字段的不同值之間的數量
----------------------------------------------------------------------------------------------------------------------------------------
count(*) 和 count(1)和count(列名)區別
做了下select ,是統計有多少條記錄:
select count(1) from A
select count(*) from A
select count(CreateTime) from A
返回的都是A表中有多少條記錄。
2. count(1) and count(字段)
兩者的主要區別是
(1) count(1) 會統計表中的所有的記錄數,包含字段為null 的記錄。
(2) count(字段) 會統計該字段在表中出現的次數,忽略字段為null 的情況。即不統計字段為null 的記錄。
轉自:http://www.cnblogs.com/Dhouse/p/6734837.html
執行效率上:
列名為主鍵,count(列名)會比count(1)快
列名不為主鍵,count(1)會比count(列名)快
如果表多個列並且沒有主鍵,則 count(1) 的執行效率優於 count(*)
如果有主鍵,則 select count(主鍵)的執行效率是最優的
如果表只有一個字段,則 select count(*)最優。
轉自:http://eeeewwwqq.iteye.com/blog/1972576
=======================================================================================================