【问题标题】:SQL - How to select a row having a column with max value without using sub query in OracleSQL - 如何在不使用 Oracle 子查询的情况下选择具有最大值列的行
【发布时间】:2018-01-19 01:01:40
【问题描述】:
      date         value
    18/5/2010        40
    18/5/2010        20
    20/5/2010        60
    18/5/2010        30
    17/5/2010        10
    16/5/2010        40
    18/5/2010        60
    18/5/2010        25

输出

date           value
18/5/2010        60
20/5/2010        60

我需要查询具有最大值(值)(即 60)的行。所以,这里我们得到两行。
日期可以是任意顺序

请不要使用 SUBQUERY

我需要一个不使用子查询的动态查询

嵌套查询没问题...

我尝试过使用 rownum ... where rownum

【问题讨论】:

  • 您是否尝试过使用MAXHere 是一个链接,如果您不熟悉,可以帮助您入门。
  • 这是在开玩笑吗?我已经这样做了..现在使用子查询我希望通过单个查询或嵌套查询来解决它仔细阅读它....所以最大分区通过我完成了那个逻辑...
  • 另外,您是否养成侮辱试图帮助您的人的习惯?一般情况如何?
  • @apc 我认为他的问题 -4 分回答了你的问题......
  • 让我们把它设为-5。

标签: sql oracle top-n


【解决方案1】:

在 12c 中,FETCH 子句允许您这样做

select * from the_table
 order by value desc
 FETCH FIRST 1 ROWS WITH TIES;

【讨论】:

  • 这仅在 Oracle 12 中有效。
  • 好吧,我没有使用 12c ...但至少谢谢你的回答☺你的逻辑很强大......我不想要嵌套查询的原因是因为我要获取超过 80000 行+8 列,所以已经有外部查询,我已经使用子查询完成了,所以它不是一种有效的方式,并且需要花费很多时间来执行 ....
  • @mayank 所有这些都可以放在您的问题中,而不是对答案发表评论。
  • @SandPiper 好的 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多