第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

相當(dāng)于COUNTIF聚合函數(shù)的SQL Server

相當(dāng)于COUNTIF聚合函數(shù)的SQL Server

肥皂起泡泡 2019-11-12 10:45:01
我正在建立一個帶有GROUP BY子句的查詢,該子句需要能夠僅基于特定條件來對記錄進(jìn)行計數(shù)(例如,僅對某個列值等于1的記錄進(jìn)行計數(shù))。SELECT  UID,         COUNT(UID) AS TotalRecords,         SUM(ContractDollars) AS ContractDollars,        (COUNTIF(MyColumn, 1) / COUNT(UID) * 100) -- Get the average of all records that are 1FROM    dbo.AD_CurrentViewGROUP BY UIDHAVING  SUM(ContractDollars) >= 500000該COUNTIF()行顯然由于沒有調(diào)用本機(jī)SQL函數(shù)COUNTIF而失敗,但是這里的想法是確定MyColumn的所有值為'1'的行的百分比。關(guān)于如何在MS SQL 2005環(huán)境中正確實現(xiàn)這一點的任何想法?
查看完整描述

3 回答

?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗 獲得超13個贊

您可以將SUM(而不是COUNT?。┡cCASE語句結(jié)合使用,如下所示:


SELECT SUM(CASE WHEN myColumn=1 THEN 1 ELSE 0 END)

FROM AD_CurrentView

注意:在我自己的測試NULL中,這不是問題,盡管這可能取決于環(huán)境。您可以處理空值,例如:


SELECT SUM(CASE WHEN ISNULL(myColumn,0)=1 THEN 1 ELSE 0 END)

FROM AD_CurrentView


查看完整回答
反對 回復(fù) 2019-11-12
?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊

我通常會按照J(rèn)osh的建議去做,但是集思廣益并測試了我覺得很喜歡分享的略微曲折的選擇。


您可以利用COUNT(ColumnName)不計算NULL的事實,并使用如下所示的內(nèi)容:


SELECT COUNT(NULLIF(0, myColumn))

FROM AD_CurrentView

NULLIF-如果兩個傳入的值相同,則返回NULL。


優(yōu)點:將您的意圖表達(dá)為COUNT行,而不是SUM()表示法。缺點:不清楚其工作方式(“魔術(shù)”通常很糟糕)。


查看完整回答
反對 回復(fù) 2019-11-12
?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗 獲得超4個贊

SELECT COUNT(CASE WHEN myColumn=1 THEN AD_CurrentView.PrimaryKeyColumn ELSE NULL END)

FROM AD_CurrentView

對于我來說效果很好(在SQL Server 2012中),而無需將“計數(shù)”更改為“總和”,并且相同的邏輯可移植到其他“條件聚合”中。例如,根據(jù)條件求和:


SELECT SUM(CASE WHEN myColumn=1 THEN AD_CurrentView.NumberColumn ELSE 0 END)

FROM AD_CurrentView


查看完整回答
反對 回復(fù) 2019-11-12
  • 3 回答
  • 0 關(guān)注
  • 1335 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號