2010-02-09 52 views
2

我有一張叫做orders的表。 它有3個我關心的領域:價格,類型和出價。出價是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。

回答

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;