Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Номер недели  [new]
0-wsm
Member

Откуда:
Сообщений: 4
Подскажите пожалуйста, как сгруппировать данные.

with week as (select rownum, sysdate + rownum day from dual connect by level < 15)
select sum(1) summ, to_char(day,'IW') weekno from week group by to_char(day,'IW')

Это получится группировка по ISO неделям. А надо по нашим, русским. Тем, что в календаре.
14 окт 10, 18:36    [9609643]     Ответить | Цитировать Сообщить модератору
 Re: Номер недели  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
0-wsm,

'ww' 
что ли?
14 окт 10, 18:49    [9609728]     Ответить | Цитировать Сообщить модератору
 Re: Номер недели  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
0-wsm
Это получится группировка по ISO неделям. А надо по нашим, русским. Тем, что в календаре.


Well, it is possible something changed with calendar since I left coвoк. Are you saying week in Russia does not start Monday nowadays?

SY.
14 окт 10, 20:23    [9610090]     Ответить | Цитировать Сообщить модератору
 Re: Номер недели  [new]
-2-
Member

Откуда:
Сообщений: 15330
SY,

Вероятно проблема не в начале недели, а что первое января может оказаться за номером 53.
14 окт 10, 20:27    [9610104]     Ответить | Цитировать Сообщить модератору
 Re: Номер недели  [new]
0-wsm
Member

Откуда:
Сообщений: 4
-2-,

Именно так. iw и ww не подходит.
Можно процедуру написать, но это не очень изящное решение, как мне кажется.

Неужели никто не сталкивался?
14 окт 10, 20:49    [9610189]     Ответить | Цитировать Сообщить модератору
 Re: Номер недели  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
0-wsm
-2-,

Именно так. iw и ww не подходит.
Можно процедуру написать, но это не очень изящное решение, как мне кажется.

Неужели никто не сталкивался?


Hint:

with t as (
           select  add_months(sysdate,12*(level-1)) dt
             from  dual
             connect by level < 15
          )
select  dt,
        to_char(dt,'iw') dt_iso_week_number,
        ceil((trunc(dt,'iw') - trunc(dt,'yy')) / 7) + 1 dt_russian_week_number,
        to_char(trunc(dt,'yy'),'iw') january_first_iso_week_number,
        ceil((trunc(trunc(dt,'yy'),'iw') - trunc(trunc(dt,'yy'),'yy')) / 7) + 1 january_first_russian_week_num
  from t
/

DT        DT_ISO_WEEK_NUMBER DT_RUSSIAN_WEEK_NUMBER JANUARY_FIRST_ISO_WEEK_NUMBER JANUARY_FIRST_RUSSIAN_WEEK_NUM
--------- ------------------ ---------------------- ----------------------------- ------------------------------
14-OCT-10 41                                     42 53                                                         1
14-OCT-11 41                                     42 52                                                         1
14-OCT-12 41                                     42 52                                                         1
14-OCT-13 42                                     42 01                                                         1
14-OCT-14 42                                     42 01                                                         1
14-OCT-15 42                                     42 01                                                         1
14-OCT-16 41                                     42 53                                                         1
14-OCT-17 41                                     42 52                                                         1
14-OCT-18 41                                     41 01                                                         1
14-OCT-19 42                                     42 01                                                         1
14-OCT-20 42                                     42 01                                                         1

DT        DT_ISO_WEEK_NUMBER DT_RUSSIAN_WEEK_NUMBER JANUARY_FIRST_ISO_WEEK_NUMBER JANUARY_FIRST_RUSSIAN_WEEK_NUM
--------- ------------------ ---------------------- ----------------------------- ------------------------------
14-OCT-21 41                                     42 53                                                         1
14-OCT-22 41                                     42 52                                                         1
14-OCT-23 41                                     42 52                                                         1

14 rows selected.

SQL> 

SY.

Сообщение было отредактировано: 14 окт 10, 21:01
14 окт 10, 21:00    [9610261]     Ответить | Цитировать Сообщить модератору
 Re: Номер недели  [new]
ComodDontLookAtIp
Guest
... расистского и националистического ... уважать других ...
coвoк
15 окт 10, 08:54    [9611478]     Ответить | Цитировать Сообщить модератору
 Re: Номер недели  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
ComodDontLookAtIp
... расистского и националистического ... уважать других ...
coвoк


Да, извини - о покойниках или хорошо или ничего .

SY.

Сообщение было отредактировано: 15 окт 10, 15:10
15 окт 10, 15:09    [9614904]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить