如何在没有案例的情况下创建群组?

时间:2016-10-19 09:13:36

标签: sql oracle

我对如何在没有案例的情况下创建群组感到疑惑。

我确实有这样的数据:

 date1  date2   random num,ber  rank within group 
  01.01.2016    01.01.2016  0.6818  1
  01.01.2016    01.01.2016  0.5213  2
  01.01.2016    01.01.2016  0.5017  3
01.01.2016  01.01.2016  0.4305  4
01.01.2016  01.01.2016  0.4087  5
01.01.2016  01.01.2016  0.3646  6
31.1.2016   31.1.2016   0.173   1
31.1.2016   31.1.2016   0.1577  2
31.1.2016   31.1.2016   0.1577  3
31.1.2016   31.1.2016   0.1462  4
31.1.2016   31.1.2016   0.1462  5
04.02.2016  04.02.2016  0.5279  1
04.02.2016  04.02.2016  0.4354  2
04.02.2016  04.02.2016  0.4098  3
04.02.2016  04.02.2016  0.387   4
04.02.2016  04.02.2016  0.3823  5

我想创建一个名为NUMBER OF GROUP的新属性。 我想要

01.01.2016 = 1, 31.01.2016 as 2, 04.02.2016 as 3. 

你知道在没有情况下如何做到这一点的任何技巧吗?

我试过了:

  rank () over (partition by a.date1  order by a.date2 ASC) as group_number

但我只得到1。

感谢您的帮助。 巴

1 个答案:

答案 0 :(得分:3)

如果我理解你想获得任何日期的排名。您可以使用DENSE_RANK()

select date1, date2 ,random_number, DENSE_RANK() over (order by date1) as rnk
from your_table