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

标签 sql mysql

我有一个名为 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/

相关文章:

mysql - 了解为什么外键引用同一张表中的主键?

sql - 如何找到不为空的结果?

sql - 在间隔桶中分配时间

mysql - 如何编写条件 mysql 查询?

mysql - 按月在表中显示结果

mysql - 需要有关构建 sql 查询的帮助

sql - 每个用户 ID 的 first_value 和 last_value

mysql - mysql时间查询错误

sql - 将 ISNUMERIC() 与 sql_variant SQL Server 一起使用

mysql - EclipseLink JPA 辅助服务器