7

次のようなテーブルがあるとします。

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 ...

私はこのフィドルで試しています。

4

3 に答える 3

20

ANSI SQL

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

SQLFiddleデモ

MySQL固有(eggyalが指摘)

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

SQLFiddleデモ

于 2012-08-28T12:22:34.730 に答える
4

はい、次のように使用することもできます。

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

このSQLFiddleを参照してください

于 2012-08-28T12:36:50.533 に答える
0
SELECT 
   SUM(CASE WHEN Result='fail' THEN 1 ELSE 0 END) as FailCount, 
   COUNT(Result) as TotalCount FROM table_name
于 2012-08-28T12:25:00.267 に答える