2014-02-28 127 views
1

我想要做的是這個MySQL合併查詢在同一張表

我有ID號和標準列0或1值。我想獲得這些百分比。

SELECT COUNT(id) FROM table; /* ALL COUNT */ 
SELECT COUNT(id) FROM table WHERE criteria='1' /* pass count */ 
SELECT COUNT(id) FROM table WHERE criteira='0' /* fail count */ 

這就是它的基本原理,但不是我想要做的。我需要通過和失敗的百分比。我如何獲得?

+0

標準可以是任何東西? –

回答

3

試試這個使用COUNT()SUM()與條件還使用聚合功能,而無需再分組結果將是一列,條件和返回布爾所以如果conditon匹配它的結果爲真,並將努力爲計數

SELECT COUNT(id) `all` 
,SUM(criteria='1') `pass` 
,SUM(criteria='0') `fail` 
FROM `table` 
+1

謝謝你,這有幫助!雖然這不會給我百分比,但這幾乎是我需要的。我希望利用MySQL來獲得通過和失敗的百分比,並找到一種方法來做到這一點,而不是多次查詢「全部」計數。我可以用PHP做到這一點沒有問題。 – ODelibalta

0

幾乎和其他帖子一樣,但我認爲使用IF是不可避免的!

SELECT 
    COUNT(*) AS `count` 
    , SUM(IF(criteria='1', 1, 0)) AS `pass` 
    , SUM(IF(criteria='0', 1, 0)) AS `fail` 
FROM `table` 
0

這裏是除了1或0的SQL fiddle

SELECT 
ROUND((SUM(CASE WHEN CRITERIA = '1' THEN 1 ELSE 0 END)/SUM(1)) * 100, 2) AS PASS_PCT, 
ROUND((SUM(CASE WHEN CRITERIA = '0' THEN 1 ELSE 0 END)/SUM(1)) * 100, 2) AS FAIL_PCT 
FROM SAMPLE