为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle SQL查询:根据时间检索每组的最新值

Oracle SQL查询:根据时间检索每组的最新值

www说 2019-12-02 08:04:04
Oracle SQL查询:根据时间检索每组的最新值我在Oracle DB中有下表id     date              quantity1      2010-01-04 11:00  1522      2010-01-04 11:00  2101      2010-01-04 10:45  1322      2010-01-04 10:45  3184      2010-01-04 10:45  1221      2010-01-04 10:30  13      2010-01-04 10:30  2142      2010-01-04 10:30  55154      2010-01-04 10:30  210现在我想检索每个id的最新值(及其时间)。示例输出:id     date              quantity1      2010-01-04 11:00  1522      2010-01-04 11:00  2103      2010-01-04 10:30  2144      2010-01-04 10:45  122我只是无法弄清楚如何将它放入查询......此外,以下选项会很好:选项1:查询应仅返回最后XX分钟的值。选项2:id应与另一个具有id和idname的表中的文本连接。id的输出应该是:id-idname(例如1-testid1)。非常感谢您的帮助!
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

鉴于此数据......


SQL> select * from qtys

  2  /


        ID TS                      QTY

---------- ---------------- ----------

         1 2010-01-04 11:00        152

         2 2010-01-04 11:00        210

         1 2010-01-04 10:45        132

         2 2010-01-04 10:45        318

         4 2010-01-04 10:45        122

         1 2010-01-04 10:30          1

         3 2010-01-04 10:30        214

         2 2010-01-04 10:30       5515

         4 2010-01-04 10:30        210


9 rows selected.


SQL>

...以下查询给出了你想要的......


SQL> select x.id

  2         , x.ts as "DATE"

  3         , x.qty as "QUANTITY"

  4  from (

  5      select id

  6             , ts

  7             , rank () over (partition by id order by ts desc) as rnk

  8             , qty

  9      from qtys ) x

 10  where x.rnk = 1

 11  /


        ID DATE               QUANTITY

---------- ---------------- ----------

         1 2010-01-04 11:00        152

         2 2010-01-04 11:00        210

         3 2010-01-04 10:30        214

         4 2010-01-04 10:45        122


SQL>

关于附加要求,可以对外部WHERE子句应用其他过滤器。类似地,您可以将其他表连接到内联视图,就像任何其他表一样。



查看完整回答
反对 回复 2019-12-03
  • 2 回答
  • 0 关注
  • 678 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信