2012-08-28 76 views
5

假設我有一個表是這樣的:過濾數和總數不子查詢

ID  Result 
------------- 
1  ,  'pass' 
2  ,  'pass' 
3  ,  'fail' 
4  ,  'fail' 
5  ,  'fail' 
6 ,   'fail' 

有沒有什麼簡單的方法來找到COUNT WHERE result = 'fail' AND total COUNT

預期輸出:

FailCount TotalCount 
----------------------- 
    4   6 

是的,我們能做到這一點使用子查詢是這樣的:

SELECT 
(SELECT COUNT(result) FROM t WHERE result='fail') AS FAILCount 
, COUNT(result) 
AS TotalCount FROM t; 

但有什麼辦法可以這樣做:

SELECT COUNT(WHERE Result='fail') , COUNT(Result) FROM ... 

I am trying in this fiddle.

+0

@Downvoter:What't問題? – hims056

回答

13

ANSI SQL

SELECT 
    SUM(CASE WHEN Result='fail' THEN 1 ELSE 0 END) , 
    COUNT(*) FROM ... 

SQLFiddle Demo

MySQL的具體(由eggyal如指出)

SELECT 
     SUM(Result='fail') , 
     COUNT(*) FROM ... 

SQLFiddle Demo

+0

在MySQL中,可以將其縮寫爲SUM(Result ='fail')'。 – eggyal

+0

@eggyal,你說得對,更正了; =) –

+0

@eggyal謝謝。您在MySQL中完全評論了我想要的內容。 – hims056

0
SELECT 
    SUM(CASE WHEN Result='fail' THEN 1 ELSE 0 END) as FailCount, 
    COUNT(Result) as TotalCount FROM table_name 
4

是的我們也可以使用這樣的:

SELECT 
    COUNT(CASE WHEN Result='fail' THEN 1 ELSE NULL END) , 
    COUNT(*) FROM ... 

See this SQLFiddle