0

フィールド「system」と「color_code」を持つ単一のテーブル(詳細)があります。単一の SQL ステートメントを使用して、システムごとに color_code でアイテムの割合を計算したいと考えています。私はこれを持っています:

SELECT system, color_code, Count(color_code) AS ColorCount, 
       Count(color_code)*100 /(select count(*) from Detail) AS ColorPercent
FROM Detail
GROUP BY system, color_code;

"ColorPercent" の結果は、すべてのレコードの結果です。「ColorPercent」を各「システム」のレコード数に基づくようにしたい。

これ(式に「GROUP BY方式」を追加)をしてみましたが、うまくいきません。

SELECT system, color_code, Count(color_code) AS ColorCount, 
       Count(color_code)*100/(select count(*) from Detail 
                              GROUP BY system) AS ColorPercent
FROM Detail
GROUP BY system, color_code;
4

3 に答える 3

1

サブクエリが複数の値を返しているため、おそらく機能しません。where句を追加して、一意のシステムを使用していることを確認し、カウントを取得してください

SELECT system, color_code, Count(color_code) AS ColorCount, 
Count(color_code)*100/(select count(*) from Detail where system = D.system) AS ColorPercent
FROM Detail D
GROUP BY system, color_code;

これはうまくいくはずです。ご覧のとおり、メジャークエリのグループに応じてカウントを関連付けています

于 2012-09-05T14:50:06.277 に答える
1

サブクエリで取得するレコードを制限する必要があります。試す:

SELECT system, color_code, Count(color_code) AS ColorCount, Count(color_code)*100 /(select count(*) from Detail where system = D.system) AS ColorPercent
FROM Detail D
GROUP BY system, color_code;

テーブルのエイリアスを作成する必要があるかどうかはわかりません

于 2012-09-05T14:51:08.443 に答える
1

どうですか:

 SELECT system, color_code, 
        Count(color_code) AS ColorCount, 
        Count(color_code)*100/(select count(*) from Detail d 
                               where d.system=detail.system) AS ColorPercent
FROM Detail
GROUP BY system, color_code;
于 2012-09-05T14:49:56.720 に答える