2013-03-21 63 views
-2

我的問題是我想在單個查詢中獲得三個條件的計數。我知道我可以運行多個查詢做到這一點,但問題是我需要它在一個查詢獲取多個條件的計數

我查詢我曾嘗試是

SELECT COUNT(IF(da <3, da, 0)) AS da1, 
     COUNT(IF(da <2, da, 0)) AS da2, 
     COUNT(IF(da <1, da, 0)) AS da3 
FROM tv 

而其結果是

4 4 4 

但預期結果是

2 1 0 

表內數據存在da列是需要

3 2 1 3 

回答

2
SELECT SUM(IF(rr <3, 1, 0)) AS da1, 
     SUM(IF(rr <2, 1, 0)) AS da2, 
     SUM(IF(rr <1, 1, 0)) AS da3 
FROM tv; 
0

COUNT()GROUP BY使用 - 我認爲這可能是你的問題,試圖通過`da`分組。

+0

我'組by'嘗試,但它給了我錯誤的輸出。 3 X 3矩陣輸出。 – 2013-03-21 06:02:18

0

我才發現我的問題,但PSR的解決方案的解決方案也是正確

SELECT * 
FROM (

    SELECT COUNT(da) AS da1 
    FROM tv 
    WHERE da <3 
    ) AS da1, (

    SELECT COUNT(da) AS da2 
    FROM tv 
    WHERE da <2 
    ) AS da2, (

    SELECT COUNT(da) AS da3 
    FROM tv 
    WHERE da <1 
    ) AS da3 
+0

雖然這不是一個查詢。 – 2013-03-21 05:54:42

+0

@MarshallHouseHouse子查詢。 – 2013-03-21 05:56:29

+0

同樣的低效率。 – 2013-03-21 05:57:38