【发布时间】:2021-01-27 13:51:37
【问题描述】:
我想我的问题可以用一个回答 Oracle 解析函数中的 SQL 但我不是 确定。 假设我有以下“文档”数据库表:
- 排名:逆序,每个文档都有自己的顺序,最新文档修订号最低(0)
- 修订:每个文档的字母数字序列,最新文档修订具有最高修订 ID
| NAME | RANK | REVISION | STATE |
|---|---|---|---|
| DocumentA | 0 | 5b | ReadOnly |
| DocumentA | 1 | 5a | Draft |
| DocumentA | 3 | 3 | ReadOnly |
| DocumentA | 4 | 2 | Draft |
| DocumentA | 2 | 4 | Published |
| DocumentA | 5 | 1 | Published |
| DocumentB | 0 | 2 | Draft |
| DocumentB | 1 | 1 | Published |
| DocumentC | 0 | 1 | Published |
请求的结果集:每个文档的最新发布修订版
给我,对于每个文档,最新发布的文档,具有最低的排名号
由于最新的文档修订可能处于状态草稿中,因此并不总是 0
| NAME | RANK | REVISION | STATE |
|---|---|---|---|
| DocumentA | 2 | 4 | Published |
| DocumentB | 1 | 1 | Published |
| DocumentC | 0 | 1 | Published |
请制定 SQL 查询以返回此结果集。非常感谢!
【问题讨论】:
-
无论何时从最早的行开始按降序排列,您是否想获得
Draft之前的倒数第二行? -
我只对已发布的修订感兴趣,无论之前或之后添加了多少文档修订
-
您决定 DocumentA RANK 2 REVISION 4,因为 RANK 2 REVISION 1?
-
因为排名 2
标签: sql oracle analytic-functions