我有一个名为 orders 的表。 它有 3 个我关心的字段:价格、类型和出价。 Bid 是一个 0 或 1 的整数,具体取决于订单是买还是卖。 1 为买入,0 为卖出。
订单
|typeID |price |bid|
|1 |10 |0|
|2 |20 |0|
|3 |30 |0|
|4 |50 |0|
|1 |80 |0|
|2 |30 |0|
|3 |50 |0|
|4 |10 |0|
|1 |8 |1|
|2 |7 |1|
|3 |9 |1|
我试图找出哪 100 种不同类型的买卖订单平均价格差异最大。
我不确定该怎么做。我知道我可以按买单或卖单的平均价格下单,但我需要按它们之间的差价下单。如果重要的话,我正在使用 mysql。
最佳答案
我相当有信心这应该有效:
SELECT `typeID`, AVG(IF(`bid`, `price`, 0)) AS `average_buy_price`, AVG(IF(`bid`, 0, `price`)) AS `average_sell_price`,
AVG(IF(`bid`, `price`, 0)) - AVG(IF(`bid`, 0, `price`)) AS `difference`
FROM `orders`
GROUP BY `typeID`
LIMIT 100
ORDER BY `difference` DESC;
关于sql - 按两个平均值之间的差值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226824/