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 |
+---------+--------+-----+
如何在单个查询中获得此结果?
最佳答案
你可以通过聚合得到你想要的。 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;
关于MySQL 在同一个表中加入两个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23805906/