[英]Select one value of column, corresponding with distinct value of other column
voucherId value balance
1 100 20
2 300 120
3 500 220
orderId voucherId ordertouserId
1 1 1
2 3 2
3 2 1
4 1 1
2 2 2
我有两张餐券和订单。 我想要
select sum(value)
from vouchers with distinct orderid
group by ordertouserId
我不确定该怎么做。
该查询:
select o.ordertouserId, count(o.order_id) as Orders, sum(v.value) as Total_value
from vouchers v
join orders o on o.voucher_id = v.voucher_id
group by o.ordertouserId
给出结果:
ordertouserId Orders Total_value
1 3 500
2 2 1000
但是我想选择与distinct o.orderId
对应的sum(v.value)
作为Total_value
。
所需结果:
ordertouserId Orders Total_value
1 3 500
2 1 500
在所需的输出中,ordertouserId = 2显示voucherId = 3的Total_value。如何确定不希望显示voucherId = 2的Total_value?
抱歉,这不是答案,但是我没有足够的“信誉”来发表关于该问题的评论。 为了更好地了解您如何为ordertouserId = 2选择Total_value = 500(而不是Total_value = 300),我的答案必须是:
无法获得所需的输出,因为没有明确的方法来确定在ordertouserId = 2的情况下在计算Total_value时应使用哪个voucherId。
顺便说一句,我认为在第一个输出表中有一个错误,显示ordertouserId = 2,Total_value =1000。ordertouserId= 2的TotalValue不应为300 + 500 = 800吗?
根据您对其他答案的评论建议,我创建了表并运行了查询。 这就是我所拥有的(它与您在问题中得到的输出不同)。 顺便说一句,您发布的查询也无法按提供的方式工作,列名中混合使用了驼峰式ID和_id。
我创建了表并运行了查询。 结果如下:
mysql> select * from vouchers;
+-----------+-------+---------+ | voucherId | value | balance | +-----------+-------+---------+ | 1 | 100 | 20 | | 2 | 300 | 120 | | 3 | 500 | 220 | +-----------+-------+---------+ 3 rows in set (0.00 sec)
mysql> select * from orders;
+---------+-----------+---------------+ | orderId | voucherId | ordertouserId | +---------+-----------+---------------+ | 1 | 1 | 1 | | 2 | 3 | 2 | | 3 | 2 | 1 | | 4 | 1 | 1 | | 2 | 2 | 2 | +---------+-----------+---------------+ 5 rows in set (0.00 sec)
mysql> select o.ordertouserId, count(o.orderId) as Orders, sum(v.value) as Total_value from vouchers v join orders o on o.voucherId=v.voucherId group by o.ordertouserId
+---------------+--------+-------------+ | ordertouserId | Orders | Total_value | +---------------+--------+-------------+ | 1 | 3 | 500 | | 2 | 2 | 800 | +---------------+--------+-------------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.