programing

연간 월별 그룹 쿼리 방법

megabox 2023. 3. 25. 10:59
반응형

연간 월별 그룹 쿼리 방법

Oracle SQL Developer를 사용하고 있습니다.기본적으로 다음과 같은 컬럼이 들어 있는 사진 테이블이 있습니다.

[DATE_CREATE(날짜), NUM_of_PICTURES(int)]

* 를 선택하면 다음과 같은 출력이 나타납니다.

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

저는 이 사진들을 데일리가 아닌 월간 수치로 집계하려고 합니다.

저는 다음과 같은 일을 시도했습니다.

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

Month 함수가 잘못되었습니까?

산출물에 년도를 포함시키고 싶습니다.편도:

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;

순서 by에 주의해 주세요.이러한 순서에는, 아마 순서가 필요하기 때문에, 행이 그룹 뒤에 반환되는 순서에 대해서는 보증할 수 없습니다.

Oracle의 경우:

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

MSQL에서는 이렇게 하고 있습니다.

월간 데이터 가져오기:

 SELECT YEAR(DATE_CREATED) [Year], MONTH(DATE_CREATED) [Month], 
     DATENAME(MONTH,DATE_CREATED) [Month Name], SUM(Num_of_Pictures) [Pictures Count]
    FROM pictures_table
    GROUP BY YEAR(DATE_CREATED), MONTH(DATE_CREATED), 
     DATENAME(MONTH, DATE_CREATED)
    ORDER BY 1,2

피벗을 사용하여 월간 데이터 가져오기:

SELECT *
FROM (SELECT YEAR(DATE_CREATED) [Year], 
       DATENAME(MONTH, DATE_CREATED) [Month], 
       SUM(Num_of_Pictures) [Pictures Count]
      FROM pictures_table
      GROUP BY YEAR(DATE_CREATED), 
      DATENAME(MONTH, DATE_CREATED)) AS MontlySalesData
PIVOT( SUM([Pictures Count])   
    FOR Month IN ([January],[February],[March],[April],[May],
    [June],[July],[August],[September],[October],[November],
    [December])) AS MNamePivot

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) 

다음을 사용할 수 있습니다.

    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)

언급URL : https://stackoverflow.com/questions/11531785/how-to-query-group-by-month-in-a-year

반응형