MySQL在同一个表中加入两个查询

时间:2014-05-22 11:45:02

标签: mysql sql

mysql> select * from fact_lab;
    +---------+--------+-----+
    | product | amount | box |
    +---------+--------+-----+
    | a       |    100 |   1 |
    | b       |    200 |   1 |
    | c       |     50 |   1 |
    | a       |    200 |   2 |
    | b       |    100 |   2 |
    | c       |     50 |   2 |
    | a       |    100 |   3 |
    | b       |    200 |   3 |
    | c       |     50 |   3 |
    +---------+--------+-----+
    9 rows in set (0.00 sec)

我正在寻找一个输出,我可以看到每个产品的总金额,它将显示与方框2的金额进行比较。因此,输出应该如下所示

+---------+--------+-----+
| product | amount | inbox2 |
+---------+--------+-----+
| a       |    400 | 200 |
| b       |    500 | 100 |
| c       |    150 |  50 |
+---------+--------+-----+

如何在单个查询中获得此结果?

1 个答案:

答案 0 :(得分:4)

您可以通过聚合获得所需内容。 group by是SQL语言的基本部分。如果你不理解它,那么你应该对语言进行更多的研究。

第二部分使用条件聚合。也就是说,case语句是sum()的参数:

select fl.product, sum(amount) as amount,
       sum(case when box = 2 then amount else 0 end) as inbox2
from fact_lab fl
group by fl.product;