2015-07-21 51 views
2

生成的结果看起来像这样:MYSQL:如何得到一组共列重复,同时保持分组

------------------------ 
|GROUP A|GROUP B|AMOUNT| 
------------------------ 
| A | 1 | 5 | 
| A | 2 | 4 | 
| B | 1 | 4 | 
| B | 2 | 2 | 
| B | 3 | 6 | 
| C | 1 | 1 | 
| C | 2 | 4 | 
------------------------ 

展望新列的总沿B组重复A组的总结:

--------------------------------------- 
|GROUP A|GROUP B|AMOUNT|SUM of GROUP A| 
--------------------------------------- 
| A | 1 | 5 |  9  | 
| A | 2 | 4 |  9  | 
| B | 1 | 4 |  12  | 
| B | 2 | 2 |  12  | 
| B | 3 | 6 |  12  | 
| C | 1 | 1 |  5  | 
| C | 2 | 4 |  5  | 
--------------------------------------- 

我使用了几个派生表和连接表,所以希望这会很容易在当前SELECT语句或其他派生表中计算。有任何想法吗?无法使用WITH ROLLUP修饰符添加其他行。

+1

你可以使用子查询corelated,但性能将是废话。总之,不要这样做。你正试图填充行中的数据,直到行被分组操作“销毁”之后才能使用这些数据。 –

回答

1

尝试这样:

SELECT t1.*, SumOfGroup_A 
FROM mytable AS t1 
INNER JOIN (
    SELECT GROUP_A, SUM(AMOUNT) AS SumOfGroup_A 
    FROM mytable 
    GROUP BY GROUP_A 
) t2 ON t1.GROUP_A = t2.GROUP_A 

Demo here

+0

虽然表现有点滞后,但它起作用。 –