1

質問に合格または不合格のいずれかが回答されているテーブルがあります。

質問の総数のうち、質問 1 の不合格の割合を見つける SQL クエリが必要なだけです。

これを試していますが、構文エラーが発生しています-

$CA001 = "COUNT(CA001Result WHERE CA001Result = "Fail") / COUNT(CA001Result)) From Datable";

私が言ったように、まったくの初心者です。ところで、それはMYSQLです。

Product の % の結果を分離する必要はありません。これまでのところ、GROUP by Product を試してみましたが、うまくいきませんでした。何かアイデアはありますか?

$CA001 = "( SELECT ROUND(100 *  (SELECT count(CA001Result ) from Data_Table where (CA001Result='Fail' AND Product='$product' AND Area='$Area'))/count(CA001Result),2) from Data_Table) AS 'CA001 %'";

もう一度見てみると、以下のような場所に WHERE Product = 'Product' を挿入する必要がありますが、以下が機能しないため、どこに配置すればよいかわかりません。

$CA001 = "( SELECT ROUND(100 * (SELECT count(CA001Result ) from Data_Table where (CA001Result='Fail' AND Product='$product' AND Area='$Area'))/count(CA001Result WHERE Product = '$product'),2) from Data_Table) AS 'CA001 %'";

4

1 に答える 1

5

これがあなたのテーブルであるとします:

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

したがって、次のようなサブクエリを使用する必要があります。

SELECT 100 * 
(SELECT COUNT(answer) FROM t WHERE answer='fail')/COUNT(answer)
AS Fail_percent FROM t;

COUNTまたは、次のCASEように使用できます。

SELECT 100 * 
COUNT(CASE WHEN answer = 'fail' THEN 1 ELSE NULL END)/COUNT(answer)
AS Fail_percent FROM t;

SUMまたは、次のCASEように使用できます。

SELECT 100 * 
SUM(CASE WHEN answer = 'fail' THEN 1 ELSE 0 END)/COUNT(answer)
AS Fail_percent FROM t;

または、次のように (MySQL のみ) を使用SUMせずに使用できます。CASE

SELECT 100 * 
SUM(answer = 'fail')/COUNT(answer)
AS Fail_percent FROM t;

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

于 2012-08-28T10:49:37.047 に答える