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

Откуда:
Сообщений: 12
Имеется таблица, в котой нужно подсчитать суммы документов по месяцам. Но! Как проще всего оформить потом сортировку по этим месяцам???

select to_char(doc_date, 'Month', 'nls_date_language=russian') as Месяц, to_char(doc_date, 'YYYY') as Год,  count (*) as Записей, sum (summy) as Сумма
from bank_doc
group by to_char(doc_date, 'Month', 'nls_date_language=russian'), to_char(doc_date, 'YYYY')
order by Год, Месяц


В данном случае месяцы в году сортируются по алфавиту, а мне нужно по их порядку.

Надо, чтобы внешний вид был такой (пример)

Месяц Год Записей Сумма
Январь 2011 5 452000
Октябрь 2011 1 110000
Январь 2012 3 4782030
Август 2012 2 1002500


Как можно сделать это проще всего?
10 сен 12, 14:54    [13140600]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
phart,
вытаскивать и группировать так же по номеру месяца.
10 сен 12, 14:56    [13140617]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
phart
Member

Откуда:
Сообщений: 12
Vint, откуда мне взять номер месяца, если месяц уже в char? Да и oracle почему-то ругается, если в order by поля отличные от тех что в select и group by...
10 сен 12, 15:04    [13140669]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
phart,

не использовать алиас
10 сен 12, 15:05    [13140679]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
phart
Как можно сделать это проще всего?

select trunc(sysdate+x, 'MM') mon
     , to_char(trunc(sysdate+x, 'MM'), 'month') mon_name
     , to_char(trunc(sysdate+x, 'MM'), 'yyyy') yr
     , count(*) cnt
  from (select level x from dual connect by level <= 100) 
 group by trunc(sysdate+x, 'MM')
 order by mon
10 сен 12, 15:11    [13140717]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
phart,
религия не позволяет второй столбец с номером месяца сделать?)

suPPLer
щя автор будет уверять что месяц он уже выбрал.. видать второй раз не могЁт)
10 сен 12, 15:14    [13140737]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
Cavia porcellus
Member

Откуда:
Сообщений: 42
это ж второй раз транк считать, нагрузка-то на базу какая!
10 сен 12, 15:17    [13140753]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
Cavia porcellus
это ж второй раз транк считать, нагрузка-то на базу какая!

select to_char(mon, 'month') mon_name
     , to_char(mon, 'yyyy') yr
     , count(*) cnt
  from (select trunc(sysdate+level, 'MM') mon, level x from dual connect by level <= 100) 
 group by mon
 order by mon
10 сен 12, 15:24    [13140807]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
Cavia porcellus
Member

Откуда:
Сообщений: 42
suPPLer,
вот, совсем другое дело ))))
10 сен 12, 21:38    [13142767]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
phart
Member

Откуда:
Сообщений: 12
suPPLer, огромное Вам спасибо, то что нужно. Только начинаю, поэтому со вложенными ещё на "вы".


select to_char(trunc_doc_date, 'Month', 'nls_date_language=russian') Месяц
     , to_char(trunc_doc_date, 'yyyy') Год
     , count(*) Записей
     , sum (summy) Сумма
  from (select trunc(doc_date, 'MM') as trunc_doc_date, summy from bank_doc) 
 group by trunc_doc_date
 order by trunc_doc_date


Vint, спасибо.

Vint, Cavia porcellus, Ваше отношение к новоиспеченным пользователям-новичкам делает ресурсу отличную рекламу.
11 сен 12, 10:11    [13143915]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
UScorp
Member

Откуда: Кыргызстан
Сообщений: 141
suPPLer,
Что-то я не понял, зачем рекурсия вообще в запросе нужна??? Там же вроде группировка была нужна по месяцам, а не по дням.
11 сен 12, 15:33    [13146747]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
UScorp
Что-то я не понял, зачем рекурсия вообще в запросе нужна?


Чтобы генерировать данные для примера.
11 сен 12, 17:54    [13147840]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по месяцам + сортировка по порядку месяцев в году  [new]
UScorp
Member

Откуда: Кыргызстан
Сообщений: 141
suPPLer
UScorp
Что-то я не понял, зачем рекурсия вообще в запросе нужна?


Чтобы генерировать данные для примера.


Сорри, не догнал ;D
12 сен 12, 08:37    [13149501]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить