代码之家  ›  专栏  ›  技术社区  ›  BJ Clark

按两个平均数之差排序

  •  2
  • BJ Clark  · 技术社区  · 15 年前

    我只有一张叫“订单”的桌子。 它有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 回复  |  直到 15 年前
        1
  •  1
  •   TehShrike    15 年前

    我很有信心这会奏效:

    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;