반응형
월별 SQL 결과 그룹
12개월이라는 기간 동안 분산된 일부 결과를 반환하려고 합니다. 예:
MONTH IN OUT
January 210 191
February 200 111
March 132 141
April 112 141
May 191 188
etc...
날짜 범위에 결과를 분산하고 첫 번째 열을 월 이름으로 채우려면 어떻게 해야 합니까?
MSSQL에서는 다음과 같습니다.
SELECT COUNT(problem.problem_type = 'IN') AS IN,
COUNT(problem.problem_type = 'OUT') AS OUT,
DATEPART(year, DateTime) as Year,
DATEPART(month, DateTime) as Month
FROM problem
WHERE (DateTime >= dbo.FormatDateTime('2010-01-01'))
AND
(DateTime < dbo.FormatDateTime('2010-01-31'))
GROUP BY DATEPART(year, DateTime),
DATEPART(month, DateTime);
그러나 이는 Oracle 데이터베이스에 대한 것이므로 DATEPART 및 DateTime을 사용할 수 없습니다.
내 문제 표는 대략 다음과 같습니다.
problem_ID Problem_type IN_Date OUT_Date
1 IN 2010-01-23 16:34:29.0 2010-02-29 13:06:28.0
2 IN 2010-01-27 12:34:29.0 2010-01-29 12:01:28.0
3 OUT 2010-02-13 13:24:29.0 2010-09-29 15:04:28.0
4 OUT 2010-02-15 16:31:29.0 2010-07-29 11:03:28.0
사용:
SELECT SUM(CASE WHEN p.problem_type = 'IN' THEN 1 ELSE 0 END) AS IN,
SUM(CASE WHEN p.problem_type = 'OUT' THEN 1 ELSE 0 END) AS OUT,
TO_CHAR(datetime, 'YYYY') AS year,
TO_CHAR(datetime, 'MM') AS month
FROM PROBLEM p
WHERE p.DateTime >= TO_DATE('2010-01-01', 'YYYY-MM-DD')
AND p.DateTime < TO_DATE('2010-01-31', 'YYYY-MM-DD')
GROUP BY TO_CHAR(datetime, 'YYYY'), TO_CHAR(datetime, 'MM')
다음을 사용할 수도 있습니다.
SELECT SUM(CASE WHEN p.problem_type = 'IN' THEN 1 ELSE 0 END) AS IN,
SUM(CASE WHEN p.problem_type = 'OUT' THEN 1 ELSE 0 END) AS OUT,
TO_CHAR(datetime, 'MM-YYYY') AS mon_year
FROM PROBLEM p
WHERE p.DateTime >= TO_DATE('2010-01-01', 'YYYY-MM-DD')
AND p.DateTime < TO_DATE('2010-01-31', 'YYYY-MM-DD')
GROUP BY TO_CHAR(datetime, 'MM-YYYY')
참조:
당신은 아마도 그런 것을 원할 것입니다.
SELECT SUM( (CASE WHEN problem_type = 'IN' THEN 1 ELSE 0 END) ) in,
SUM( (CASE WHEN problem_type = 'OUT' THEN 1 ELSE 0 END) ) out,
EXTRACT( year FROM DateTime ) year,
EXTRACT( month FROM DateTime ) month
FROM problem
WHERE DateTime >= date '2010-01-01'
AND DateTime < date '2010-01-31'
GROUP BY EXTRACT( year FROM DateTime ),
EXTRACT( month FROM DateTime )
언급URL : https://stackoverflow.com/questions/4138371/sql-results-group-by-month
반응형
'programing' 카테고리의 다른 글
| 스프링 부트 로컬 날짜 필드 직렬화 및 역직렬화 (0) | 2023.07.23 |
|---|---|
| JavaScript 알림 상자 제목을 편집하는 방법은 무엇입니까? (0) | 2023.07.23 |
| C 변수 선언의 괄호는 무엇을 의미합니까? (0) | 2023.07.23 |
| C/C99/C++/C+++x/GNU C/GNU C99의 열거형 서명 (0) | 2023.07.23 |
| PHP를 사용하여 파일 강제 다운로드 (0) | 2023.07.23 |