Подтвердить что ты не робот

Как запросить группу за месяц в год

Я использую Oracle SQL Developer. У меня по существу есть таблица изображений, в которой хранятся столбцы:

[DATE_CREATED (дата), NUM_of_PICTURES (int)]

и если я сделаю select *, я бы получил результат, похожий на:

01-May-12    12
02-May-12    15
03-May-12    09
...
...
01-Jun-12    20
...
etc.

Я пытаюсь объединить эти суммы изображений в числа MONTHLY вместо DAILY.

Я пробовал сделать что-то вроде:

select Month(DATE_CREATED), sum(Num_of_Pictures))
from pictures_table
group by Month(DATE_CREATED);

Выдает ошибку:

ORA-00904: "MONTH": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 5 Column: 9

У меня есть функция месяца неправильно?

4b9b3361

Ответ 1

Я был бы склонен включать год в выход. Один из способов:

select to_char(DATE_CREATED, 'YYYY-MM'), sum(Num_of_Pictures)
from pictures_table
group by to_char(DATE_CREATED, 'YYYY-MM')
order by 1

Другой способ (более стандартный SQL):

select extract(year from date_created) as yr, extract(month from date_created) as mon,
       sum(Num_of_Pictures)
from pictures_table
group by extract(year from date_created), extract(month from date_created)
order by yr, mon;

Запомните порядок, так как вы, вероятно, хотите их по порядку, и нет гарантии о том, что строки возвращаются после группы.

Ответ 2

Для Oracle:

select EXTRACT(month from DATE_CREATED), sum(Num_of_Pictures)
from pictures_table
group by EXTRACT(month from DATE_CREATED);

Ответ 3

Для MS SQL вы можете это сделать.

    select  CAST(DATEPART(MONTH, DateTyme) as VARCHAR) +'/'+ 
CAST(DATEPART(YEAR, DateTyme) as VARCHAR) as 'Date' from #temp
    group by Name, CAST(DATEPART(MONTH, DateTyme) as VARCHAR) +'/'+
 CAST(DATEPART(YEAR, DateTyme) as VARCHAR) 

Ответ 4

Вы можете использовать:

    select FK_Items,Sum(PoiQuantity) Quantity  from PurchaseOrderItems POI
    left join PurchaseOrder PO ON po.ID_PurchaseOrder=poi.FK_PurchaseOrder
    group by FK_Items,DATEPART(MONTH, TransDate)