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

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

我在Oracle DB中有下表


id     date              quantity

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

现在我想检索每个id的最新值(及其时间)。示例输出:


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

我只是无法弄清楚如何将它放入查询......


此外,以下选项会很好:


选项1:查询应仅返回最后XX分钟的值。


选项2:id应与另一个具有id和idname的表中的文本连接。id的输出应该是:id-idname(例如1-testid1)。


非常感谢您的帮助!


www说
浏览 691回答 2
2回答

喵喔喔

鉴于此数据......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        2109 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        122SQL>关于附加要求,可以对外部WHERE子句应用其他过滤器。类似地,您可以将其他表连接到内联视图,就像任何其他表一样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Oracle