Oracle11g 如何根据天数使用行数?

Oracle11g 如何根据天数使用行数?,oracle11g,analytics,row-number,Oracle11g,Analytics,Row Number,如何根据7天对记录进行分组和排序 Call 1 - 06-Jun-14 16.39.14 Rank 1 Call 7 - 10-Jun-14 14.28.40 Rank 7 7天后,无论何时出现下一个通话日期, 我需要观察接下来的7天,并据此排名 Call 1 - 27-Jun-14 11.44.35 Rank 1 Call 4 - 03-Jul-14 14.23.39 Rank 4 CALL_DATE ROW_NUMBER 06-Jun-14

如何根据7天对记录进行分组和排序

Call 1 - 06-Jun-14 16.39.14  Rank 1 
Call 7 - 10-Jun-14 14.28.40  Rank 7
7天后,无论何时出现下一个通话日期, 我需要观察接下来的7天,并据此排名

Call 1 - 27-Jun-14 11.44.35  Rank 1
Call 4 - 03-Jul-14 14.23.39  Rank 4

    CALL_DATE               ROW_NUMBER
06-Jun-14 16.39.14               1
06-Jun-14 17.29.27               2
07-Jun-14 09.13.18               3
07-Jun-14 14.45.52               4
08-Jun-14 13.05.44               5
08-Jun-14 13.14.49               6
10-Jun-14 14.28.40               7
27-Jun-14 11.44.35               1
27-Jun-14 11.46.27               2
27-Jun-14 12.00.21               3
03-Jul-14 14.23.39               4

您可以使用第一个_值分析函数计算范围内的天数,并获得差值;然后除以7得到数据中的周数;然后使用该函数计算计算周数内每个日期的行数

select call_date,
  row_number() over (partition by week_num order by call_date) as row_num
from (
  select call_date,
    ceil((trunc(call_date)
      - trunc(first_value(call_date) over (order by call_date))
      + 1) / 7) as week_num
  from t42
)
order by call_date;
其中:

|                   CALL_DATE | ROW_NUM |
|-----------------------------|---------|
| June, 06 2014 16:39:14+0000 |       1 |
| June, 06 2014 17:29:27+0000 |       2 |
| June, 07 2014 09:13:18+0000 |       3 |
| June, 07 2014 14:45:52+0000 |       4 |
| June, 08 2014 13:05:44+0000 |       5 |
| June, 08 2014 13:14:49+0000 |       6 |
| June, 10 2014 14:28:40+0000 |       7 |
| June, 27 2014 11:44:35+0000 |       1 |
| June, 27 2014 11:46:27+0000 |       2 |
| June, 27 2014 12:00:21+0000 |       3 |
| July, 03 2014 14:23:39+0000 |       4 |
显示一些中间步骤和最终结果