来自派生表的mysql聚合

时间:2017-03-22 13:50:37

标签: mysql

GROUPAGE 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语法。请帮忙。

2 个答案:

答案 0 :(得分: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`;

max aggregate函数将强制第一个非空值。

答案 1 :(得分:0)

虽然描述不太清楚,但我认为你使用像group by with rollup

这样的smth

所以为了达到你想要的结果,你可以使用这样的语法

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

如果它足够你(实际上是任何聚合函数),你也可以使用MAX或MIN