【发布时间】:2014-01-24 07:12:54
【问题描述】:
好吧,我完全被难住了。
我有一张桌子 GROCERY_PRICES。
其中包含 GROCERY_ITEM、PRICE_IN_2012 和 ESTIMATED_PRICE_IN_2042 的数据。
我需要编写一个 SQL SELECT 语句来查找价格上涨百分比最高的商品。然后按 GROCERY_ITEM 排序。
我终其一生都无法弄清楚如何使用表格中的数据来获取该时间段内变化百分比最高的三个项目。
这是我拥有的代码,它返回我需要的所有数据,但针对每个 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;
我知道我需要使用子查询,但我不知道如何去做。
谢谢。
编辑:一些示例数据:
【问题讨论】:
-
您使用的是什么 DBMS(MySQL、SQL Server、Oracle,...)?
-
你能提供几行你的表中的样本数据吗?也许是我,但你的
GROUP BY对我来说毫无意义 -
@peterm 我正在使用 Oracle SQL Developer,我已对其进行了标记,但显然有人删除了该标记。
-
@petrem 我不确定如何在此处添加表格中的数据...我会尝试...
E_001 0.62 1.78 | B_001 0.8 3.28 | B_002 2.72 7.36 | M_004 2.7 5.65 | T_006 5.7 6.65 | R_003 4 16.4 | G_010 8 32.8 -
这样,GROCERY_ITEM PRICE_IN_2012 ESTIMATED_PRICE_IN_2042 | GROCERY_ITEM PRICE_IN_2012 ESTIMATED_PRICE_IN_2042 等等。