【问题标题】:Oracle Analytics Window FunctionOracle 分析窗口函数
【发布时间】:2016-04-20 01:19:45
【问题描述】:

如果我有这样的数据:

MyDate    LEVEL
01JAN2016 5.1
02JAN2016 6.2
03JAN2016 8.0
04JAN2016 5.8

如何使用窗口函数返回最高级别的日期? 我在想:

SELECT max(MyDate) over (ORDER BY LEVEL) FROM x

...但它似乎不起作用。我尝试使用 PARTITION BY 但仍然没有运气。我真的想要 max(LEVEL)。

【问题讨论】:

    标签: oracle window


    【解决方案1】:
    select mydate, level
    from (select mydate, level, row_number() over (order by level desc) rn from x)
    where rn = 1
    

    【讨论】:

      【解决方案2】:

      如果你真的想使用花哨的功能。 . .

      select max(date) keep (dense_rank first order by level desc)
      from x;
      

      但是,很多人会写:

      select x.*
      from (select x.*
            from x
            order by level desc
           ) x
      where rownum = 1;
      

      【讨论】:

      • 大声笑-猜得好! :-) 我在看到你的帖子后编辑添加了“desc” - 我在问题的第一次阅读中错过了它。
      猜你喜欢
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多