私は初心者です (DBA ではありません)。私のデータの単純なバージョン ==> 私の期待する結果:
|ボール |色|カウント| |ボール |トータルブルー|トータルレッド| ------------------- -------------------------------- |b1 |赤 | 2 | ====> |b1 | 5 | 2 | |b1 |青 | 3 | |b2 | 3 | 1 | |b1 |青 | 2 | |b2 |赤 | 1 | |b2 |青 | 3 |
各ボール (b1、b2 など) を集計したい。次に、各ボールの各色の合計インスタンス。各ボールの色ごとに複数のエントリがあります (私の実世界のデータ)。しかし、ここでは青い #1 ボールのみの複数のエントリを示しています。
私はこれを簡単に行うことができます:
SELECT ball,
SUM(count) AS 'Total Blue'
FROM t1
WHERE color = 'blue'
GROUP BY ball
最初の (良い) 結果を得るには:
|ボール |トータルブルー| ----------------- |b1 | 5 | |b2 | 3 |
さらに進むには、サブクエリが必要だと思います。しかし、サブクエリを通常のクエリと同じ方法で処理することはできませんでした。
以下は、これまでに得た最も近い結果です(単純な試み):
SELECT ball,
SUM(count) AS 'Total Blue',
(SELECT SUM(count) FROM t1 WHERE color = 'red') AS 'Total Red'
FROM t1
WHERE color = 'blue'
GROUP BY ball
私はこれを得る:
|ボール |トータルブルー| トータルレッド| --------------------------- |b1 | 5 | 3 | |b2 | 3 | 3 |
Total Red は、ボールの数に関係なく、すべての赤いボールの合計を示します。
このより複雑なサブクエリ (赤の場合) は、まったく同じ結果を生成します。
(SELECT SUM(cc) FROM
(SELECT DISTINCT count AS cc FROM t1 WHERE color = 'red') AS dd )
AS 'Total Red'
このサブクエリに GROUP BY を追加しましたが、効果はありません。これは私が得ることができたのと同じくらい近いです。他の多くの試みにより、さまざまな結果が得られました。