我是初学者(不是 DBA)。我的数据的简单版本 ==> 我希望的结果:
|球|颜色|计数| |球 |总蓝|总红| -------------------- ---------------------------- |b1 |红色 | 2 | ====> |b1 | 5 | 2 | |b1 |蓝色 | 3 | |b2 | 3 | 1 | |b1 |蓝色 | 2 | |b2 |红色 | 1 | |b2 |蓝色 | 3 |
我想将每个球(b1、b2 等)制成表格。然后是每个球的每种颜色的总实例。每个球的每种颜色都有多个条目(在我的真实世界数据中)。但在这里我只显示蓝色#1-balls 的多个条目。
我可以很容易地做到这一点:
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 添加到此子查询中,但没有增加效果。这是我所能得到的最接近的。许多其他尝试已经给出了各种各样的结果。