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 |
+---------+--------+-----+
如何在单个查询中获得此结果?
答案 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;