好吧,我完全难过了 .
我有一张表GROCERY_PRICES .
其中有GROCERY_ITEM,PRICE_IN_2012和ESTIMATED_PRICE_IN_2042的数据 .
我需要编写一个SQL SELECT语句来查找具有最高价格增长百分比的项目 . 然后按GROCERY_ITEM排序 .
我不能为我的生活弄清楚如何使用表中的数据 grab 时间段内具有最高变化百分比的三个项目 .
这是我的代码,它返回我需要的所有数据,但是对于每个GROCERY_ITEM而不是具有最高变化百分比的三个项目 . 我知道它是310,但我不能硬编码 .
SELECT grocery_item,
price_in_2012,
ESTIMATED_PRICE_IN_2042,
sum((ESTIMATED_PRICE_IN_2042 - PRICE_IN_2012) / PRICE_IN_2012) * 100 as Percent_Change
FROM grocery_prices
GROUP BY grocery_item,
price_in_2012,
ESTIMATED_PRICE_IN_2042
ORDER BY grocery_item;
我知道我需要使用子查询,但我不知道如何去做 .
谢谢 .
编辑:一些示例数据:
4 回答
前3个项目的价格涨幅最高
SQL Fiddle
希望这对你有所帮助!
这为我选择了来自im_employees表的max employee_id的前三行 .
我想这会对你有所帮助!
你在找这样的东西吗?
输出:
根据您的需要,您可能希望使用
DENSE_RANK()
而不是ROW_NUMBER()
输出:
这是 SQLFiddle 演示
试试这个
在postgresql中
在oracle