按两个平均值之间的差异排序

时间:2010-02-09 04:53:43

标签: sql mysql

我有一个名为orders的表。 它有3个我关心的领域:价格,类型和出价。 Bid是一个0或1的int,具体取决于订单是买入还是卖出。 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。

1 个答案:

答案 0 :(得分:1)

我相信这应该有用:

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;