반응형
연간 월별 그룹 쿼리 방법
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
반응형
'programing' 카테고리의 다른 글
TypeScript geting error TS2304: cannot find name ' required' (필요한 이름을 찾을 (0) | 2023.03.25 |
---|---|
Create-React-App 기반 프로젝트에 글꼴을 추가하는 방법 (0) | 2023.03.25 |
함수의 반환 유형 가져오기 (0) | 2023.03.25 |
Heroku가 HTTP 응답을 잘랐습니까? (0) | 2023.03.25 |
데이터와 파일을 포함한 JSON을 Web API에 게시합니다(jQuery / MVC). (0) | 2023.03.20 |