微網(wǎng)站建設(shè)高端網(wǎng)站定制排名seo公司哪家好
COUNT()函數(shù)
COUNT函數(shù)用法:COUNT ( [ALL | DISTINCT] column | expression | *)
- ALL關(guān)鍵字指示統(tǒng)計所有值,而DISTINCT關(guān)鍵字強制函數(shù)僅對不同的值進(jìn)行操作。 默認(rèn)情況下,使用ALL選項。
- 條件表達(dá)式
- COUNT()函數(shù)中條件表達(dá)式加 OR null。例如,
SELECT COUNT(number > 200 OR null) FROM vf;
- COUNT()函數(shù)中條件表達(dá)式使用 if。例如,
SELECT COUNT(if(number > 200, 1, null)) FROM vf;
- COUNT()函數(shù)中條件表達(dá)式使用 case when。例如,
SELECT COUNT(case when number > 200 then 1 end) FROM vf;
- COUNT()函數(shù)中條件表達(dá)式加 OR null。例如,
解析:sql 語句中count()有條件的時候為什么要加上or null
例如
count(sex= ‘男生’ or NULL)
,為什么要加上or NULL,直接count(sex=‘男生’)有什么問題嗎?不就是要找sex= '男生’的數(shù)據(jù)嗎,為什么要計算NULL的數(shù)據(jù)。答案: 因為當(dāng) sex不是男生時 sex=‘男生’ 結(jié)果false。不是 NULL, count在值是NULL是不統(tǒng)計數(shù),(count(‘任意內(nèi)容’)都會統(tǒng)計出所有記錄數(shù),因為count只有在遇見null時不計數(shù),即count(null)==0,因此前者單引號內(nèi)不管輸入什么值都會統(tǒng)計出所有記錄數(shù)),至于加上or NULL , 很像其他編程里的or運算符,第一個表達(dá)式是true就是不執(zhí)行or后面的表達(dá)式,第一個表達(dá)式是false 執(zhí)行or后面的表達(dá)式 。當(dāng)sex不為男生時,sex= ‘男生’ or NULL 的結(jié)果是NULL,Count才不會統(tǒng)計上這條記錄數(shù)
記錄自己的錯誤:
語句:
Right:select (select count(user_id) from Users)
Error:select count(select user_id from Users)
錯誤示例:count()里邊不能加查詢語句啊!!!
-- select contest_id, round(count(*)/count(select Users.user_id from Users)*100, 2) as percentage
參考文獻(xiàn):
sql—count() 中加表達(dá)式計數(shù)
count加表達(dá)式,Mysql中Count函數(shù)的正確使用!
SQL聚合函數(shù)
數(shù)據(jù)庫的高級查詢二:聚合函數(shù)(SUM、MAX,MIN,AVG,COUNT)