1

あなたが助けてくれることを願っています、これは私を壁に押し上げています

質問が失敗した回数の割合を計算する必要がありますが、これは地理的領域によって絞り込む必要があり、これらの質問が尋ねられている製品です。

私は持っています :

$CA002 = "( SELECT ROUND(100 *  (SELECT count(CA002Result) from Data_Table where (CA002Result='Fail'))/count(CA002Result),2) from Data_Table) AS 'CA002 %'";

これは「機能する」が、レコードのセット全体に対して「全体」として計算するだけです。

私はしようとしています :

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

そしてまた:

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

これも試してみますが、MYSQL構文エラーが発生します。

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

何をしようとしてもエラーが発生しているだけで、何をどこに置く必要があるのか​​わからないようです。

以下の答えを試してみました:

$CA001 = "(SELECT 100 * SUM(IF(CA001Result='Fail', 1, 0)) / COUNT(CA001Result) as 'CA001 %' WHERE  Area='$Area')";

$CA002 = "( SELECT ROUND(100 *  (SELECT count(CA002Result) from Data_Table where (CA002Result='Fail'))/count(CA002Result),2) from Data_Table) AS 'CA002 %'";

しかし、エラーとして以下を取得しています:

MySQLエラー:SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、使用する正しい構文を確認してください。'(SELECT ROUND(100 *(SELECT count(CA002Result)from Data_Table where(CA002Re' at line 1

どんな助けでも大いに感謝します、ありがとう。

編集-を使用してそれをクラックしました:

$CA001 ="ROUND ((SELECT 100 * SUM(IF(CA001Result='Fail', 1, 0)) / COUNT(CA001Result) 
FROM Data_Table
WHERE  Area='$Area'),2) as 'CA001 %'";

助けてくれてありがとう!

4

2 に答える 2

2

これを試して

SELECT 100 * SUM(IF(CA001Result='Fail', 1, 0)) / COUNT(CA001Result) as 'CA002 %'
FROM Data_Table
WHERE '$product' AND Area='$Area'
于 2012-08-29T08:03:40.993 に答える
0

私はあなたのモデルを推測しているだけですが、あなたはこのパターンを試してみるべきです:

SELECT
    Area,
    Product,
    COUNT(*) as total,
    SUM(CA002Result='Fail') as total_fail,
    SUM(CA002Result='Fail') / COUNT(*) as 'CA002 %'
FROM Data_Table
GROUP BY Area, Product;
于 2012-08-29T08:04:05.070 に答える