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
爲Total_value
sum(v.value)
。
所需的結果:
ordertouserId Orders Total_value
1 3 500
2 1 500
我不想顯示voucherid = 2 total_value因爲DESE兩個訂單ID是一樣的。所以我想要第一個訂單的total_value。 –
沒有任何錯誤,它會使憑證ID爲2的兩倍,即500 + 500即1000.請嘗試創建上面的表並運行查詢。 –
如果您需要_first_訂單的總價值,訂單如何確定?它是基於哪一行首先出現在數據中? (這可能是一個稍微脆弱的方法,因爲業務邏輯計算理想情況下應該產生相同的結果,而不管數據在表中如何排序)。 – Loedolff