我有以下數據集:SQL服務器 - 計算總過濾值
Machine Type Value
1 A 11
1 B 32
2 A 23
3 A 1
4 B 23
4 B 31
5 B 56
6 A 12
我想下面的計算:
SELECT COUNT(WHERE TYPE = A)/COUNT(TOTAL)
FROM....
哪家做的最好方法是什麼?正在使用像:
DECLARE @CNT INT
SET @CNT = (SELECT COUNT(*) FROM dataset)
SELECT COUNT(*)/CNT
FROM dataset
WHERE TYPE = A
但是,如果我有一個大的查詢重複相同的查詢這個計算放SQL慢......任何人都可以提供更好的解決方案?
也許'COUNT(情況下,當TYPE = A 1點然後結束)'實際上正在計數的總數值來自塔1或目標表中不存在的A或B可能使用SUM來代替你的第一個COUNT? – LONG
@LONG COUNT很好。然而,由於它是整數除以整數,所以在所有類型都是A的情況下,這將始終返回0或1。可以通過用1.0替換1來修復 –
哦,我明白了。對於'/'操作,我認爲這也是問題;) – LONG