我是初学者(不是DBA)。 我的数据的简单版本==>我希望的结果:使用SUM,WHERE,GROUP_BY的MySQL子查询
|ball |color|count| |ball |Total Blue|Total Red| ------------------- ---------------------------- |b1 |red | 2 | ====> |b1 | 5 | 2 | |b1 |blue | 3 | |b2 | 3 | 1 | |b1 |blue | 2 | |b2 |red | 1 | |b2 |blue | 3 |
我想制表每个球(B1,B2等)。 然后每个球的每种颜色的总实例。 每个球的每种颜色都有多个条目(在我的真实世界数据中)。 但是在这里我只显示了蓝色的#1球的多个条目。
我可以很容易地做到这一点:
SELECT ball,
SUM(count) AS 'Total Blue'
FROM t1
WHERE color = 'blue'
GROUP BY ball
为了得到第一个(好)结果:
|ball |Total Blue| ----------------- |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
我得到这个:
|ball |Total Blue| Total Red| --------------------------- |b1 | 5 | 3 | |b2 | 3 | 3 |
共有红色显示总所有红球,无论球数。
这更复杂的子查询(红色)产生完全相同的结果:
(SELECT SUM(cc) FROM
(SELECT DISTINCT count AS cc FROM t1 WHERE color = 'red') AS dd)
AS 'Total Red'
我添加GROUP BY这个子查询中不添加效果。 这是尽可能接近我已经能够得到。 许多其他尝试已经给出了各种结果。
哇,这工作....你是一位上帝......我花了几天在这个,知道stackoverflow只是坐在这里....谢谢你! –