2017-03-22 35 views
0

GROUPAGE mysql查詢的產品就像這樣;派生表中的mysql聚合

id  group  amount1  amount2 
01  A   500 
01  B   340 
01  C   190 
02  A      270 
02  B      440 
02  C      110 

現在我想對這個結果執行一個新的查詢,我的預期輸出是這樣的;

group  amount1  amount2 
A   500   270 
B   340   440 
C   190   110 

如果我讓我的查詢前者派生表T,怎麼看,如果我要達到這樣的結果積分查詢。

我意識到這可能不是一個複雜的查詢,我仍然趕上mysql語法。幫助請。

回答

0

雖然描述不是太清楚,我想你使用不便喜歡group by with rollup

因此,要實現你願意,你可以使用這樣的語法

select 
    `group`, 
    sum(amount1), 
    sum(amount2) 
from 
    (your query that creates derived table) as t 
group by 
    `group` 

你也可以用MAX或MIN的結果,如果它足夠爲你(實際上任何聚合功能)

+0

看到你的答案幫助了很多。我已經在跟蹤,但我在我的積分查詢中使用SUM(),所以它只從我的派生表中選取一行。非常感謝。 –

1

你可以做一個自我加入?沒有檢查語法,但是像這樣?

SELECT 
    d1.`group`, d1.`amount1`, d2.`amount2` 
FROM derivedtable as d1 
JOIN derivedtable as d2 ON d1.`group` = d2.`group`; 

你也可能做一個GROUP BY?

SELECT `group`, max(`amount1`), max(`amount2`) FROM `derivedtable` GROUP BY `group`; 

最大聚合函數將強制第一個非空值。

+0

自我加入是很棘手的實施我,bt羣體的工作正常。 –