只有最大变化才能获得结果?

时间:2014-04-07 02:09:41

标签: sql oracle-sqldeveloper

我只需要返回具有最高变化百分比的结果。表看起来像

item      price1    price2
a         1         2
b         3         5
c         2         3

我只想要它返回一个,像这样:

item      price1    price2   percent_change
a         1         2        200%

我试过这个

   select item, price1, price2, max(a.mPrice) as my_output from (select item, 
  ((price2-price1)/price1) * 100 as mPrice from table) a

但它说的是整数是无效的(假设是a.mPrice)。我已经尝试使用having来检查最大值,但是这不起作用,它仍然会返回所有结果。

我觉得我错过了一些非常明显的东西,但我想不出它是什么。我猜测使用max(a.mPrice)实际上不会像我需要的那样获得最大值,但我不知道还能做什么。

3 个答案:

答案 0 :(得分:0)

您的表格a除了itemmPrice之外没有任何内容,因此在外部查询中抓取price1price2不起作用。

但即使没有这样的子查询,你也可以做到这一点

SELECT item, price1, price2, ((price2-price1)/price1)*100 as growth
FROM products
ORDER BY growth DESC 
LIMIT 1;

首先,选择所有三个属性并计算增长率,然后按增长率下降排序,只取最高值。

小提琴:http://sqlfiddle.com/#!2/16b7c/7

答案 1 :(得分:0)

如果您只想要最大百分比

,则进行简单查询
SELECT item, price1, price2, MAX(((price2-price1)/price1) * 100) percent_change FROM items

答案 2 :(得分:0)

我明白了。

select item, price1, price2, ((price2 - price1)/price1) * 100 as my_output from table
group by item, price1, price2
having ((price2 - price1)/price1) * 100 = (select( max(((price2 - price1)/price2) * 100)) from table)

它很麻烦,但我需要它。