gpt4 book ai didi

sql - Oracle SQL 查询 : Retrieve latest values per group based on time

转载 作者:行者123 更新时间:2023-12-03 15:19:58 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Fetch the row which has the Max value for a column

(35 个回答)


4年前关闭。




我在 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)。

非常感谢您的帮助!

最佳答案

鉴于这些数据...

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 子句。同样,您可以将其他表连接到内联 View ,就像它是任何其他表一样。

关于sql - Oracle SQL 查询 : Retrieve latest values per group based on time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2000908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com