【问题标题】:Looking for Oracle function count from 1 when new different field shows up back to 1 and count up当新的不同字段显示回 1 并向上计数时,从 1 开始查找 Oracle 函数计数
【发布时间】:2018-01-12 23:20:11
【问题描述】:

我是 SQL 新手。我正在寻找一个函数,我一直在寻找,但我找不到我想要的。

所以在我执行之后,

我想展示,

    V   x
    a   1
    a   2
    a   3
    b   1
    b   2
    b   3
    c   1
    c   2
    d   1
    e   1
    e   2

select V, ____ over (order by V) as x from my-table

我检查了row_number,rank,dense_rank,但是这些都不起作用,是否存在任何不同的功能?

【问题讨论】:

  • over( ... order by v) 不会在组(或分区)内由相同的v 执行任何操作(当然:在这样的组或分区内,v 对于所有行都是相同的!)如果ORDER BY 是必需的,因为有时,如果写成order by null,意图会更清楚 - 结果相同。

标签: sql oracle plsql


【解决方案1】:
SELECT v, ROW_NUMBER() OVER (PARTITION BY v ORDER BY v) x
  FROM my-table

结果

V          X
- ----------
a          1
a          2
a          3
b          1
b          2
b          3
c          1
c          2
d          1
e          1
e          2

【讨论】:

  • 对。但是,请参阅我在对 OP 问题的评论中添加的关于 order by null 的注释。
  • 正确。可以使用任何值,因为它什么都不做,并且语法需要在其中排序。
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 2018-11-18
  • 2012-11-05
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多