所以我有一张表:
UNIQUE_ID MONTH
abc 01
93j 01
acc 01
7as 01
oks 02
ais 02
asi 03
asd 04
等
我查询:
select count(unique_id) as amount, month
from table
group by month
现在一切看起来都很棒:
AMOUNT MONTH
4 01
2 02
1 03
等
有没有办法让oracle将数量分成几周? 结果看起来像这样的方式:
AMOUNT WEEK
1 01
1 02
1 03
1 04
等
答案 0 :(得分:1)
假设您知道这一年 - 让我们说我们选择2014年,那么您需要每年产生所有周
select rownum as week_no
from all_objects
where rownum<53) weeks
然后说明哪些月份包含周(2014年)
select week_no, to_char(to_date('01-JAN-2014','DD-MON-YYYY')+7*(week_no-1),'MM') month_no
from
(select rownum as week_no
from all_objects
where rownum<53) weeks
然后加入您的数据
select week_no,month_no, test.unique_id from (
select week_no, to_char(to_date('01-JAN-2014','DD-MON-YYYY')+7*(week_no-1),'MM') month_no
from
(select rownum as week_no
from all_objects
where rownum<53) weeks) wm
join test on wm.month_no = test.tmonth
如上所述,这会为您提供每周的数据。您可以重做查询并按周而不是按月计算。