使用ORACLE SQL选择具有列上最大值的一行

9 浏览
0 Comments

使用ORACLE SQL选择具有列上最大值的一行

我的问题要求我“显示交易编号、股票编号和交易总价格最高的交易。

我只需要处理一个表,那就是交易表。

目前我有以下查询:

select trade_id,stock_id,max(price_total)
from trade
group by trade_id, stock_id;

我需要获取最高交易的行(我知道交易编号、股票编号和总价格),但是我的查询显示了很多行,我只需要一行,即具有最高总价格及其对应的股票编号和交易编号的行。有人知道如何只获取所需的一行吗?

P.S:我知道是哪一行,但我似乎无法只返回查询结果中的那一行。谢谢!

0
0 Comments

在Oracle SQL中,有时我们需要从一个表中选择具有最大值的特定列的一行数据。但是,由于SQL语言的限制,我们不能直接在SELECT语句中使用MAX()函数来选择具有最大值的行。

为了解决这个问题,我们可以使用子查询和ROWNUM来选择具有最大值的一行。首先,我们使用子查询来获取具有最大值的行的相关信息。在上面的示例中,我们从trade表中选择trade_id、stock_id和price_total列,并使用MAX()函数来计算price_total列的最大值。然后,我们按照最大值进行降序排序。

在子查询中,我们使用ROWNUM来指定只返回第一行结果。ROWNUM是一种Oracle特有的伪列,它可以用于限制查询结果的行数。通过将ROWNUM设置为1,我们只返回具有最大值的一行。

最后,我们在外部查询中使用SELECT * FROM子查询来获取具有最大值的行的所有信息。

上面的查询语句可以通过使用子查询和ROWNUM来选择具有最大值的一行。通过将子查询结果按照最大值降序排序,并使用ROWNUM限制结果为第一行,我们可以达到所需的结果。

0