2015-07-21 55 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

雖然表現有點滯後,但它起作用。 –