2012-07-25 48 views
1

我對SQL很陌生,無法讓SQL查詢工作。SQL數學概率涉及平均值(但不是你的想法!)

我有包含數字1到4實施例回覆列表:

問題1中包含的數據Q1:1,2,1,3,4,1,2,3,4,2

我需要做的是統計有多少個1和2,總數,然後平均數。例如在上面的例子中有一個計數,即總數爲6 1和2,並將其除以平均總數。 6/10 = .6(哦,天哪,我希望是有道理的)

我一直在嘗試這段代碼,但它總結了數字,然後除以總數。當我再次需要它只是「數」多少1和2的有1+2+1+1+2+2=9/10 = .9

Select avg(q1) as avg 
From db 
Where q1 between 1 and 2 
And call = 55817 

比如在上面的例子中它這樣做。

+0

這不是任何定義的平均值,而是比值。 – 2012-07-26 00:03:55

回答

3

對於SQLite的具體解決方案,試試這個:

SELECT AVG(q1 IN (1, 2)) AS youravg 
FROM db 
WHERE call = 55817 

看到它聯機工作:sqlfiddle

對於更標準的SQL的解決方案,你可能更喜歡這樣的:

SELECT AVG(CASE WHEN q1 IN (1, 2) THEN 1 ELSE 0 END) AS youravg 
FROM db 
WHERE call = 55817 
+0

我認爲OP真的需要'COUNT(CASE當q1 IN(1,2)THEN 1 ELSE 0 END)/ COUNT(1)' – 2012-07-26 00:06:53

+0

Duh(me),當然。我現在明白了。我對於「平均水平」這個詞的濫用感到非常緊張,我沒有看到你在做什麼。好一個! – 2012-07-26 00:10:06

+0

馬克,你是我的救星,我無法解釋我經歷了多少個網站,只需幾分鐘,你就可以解決它,向你表示敬意! – user1553094 2012-07-26 00:14:32

0

爲什麼不要使用1和2做SELECT,然後使用COUNT函數?

​​