반응형
SQL을 사용하여 날짜 필드에서 월별로 그룹화하는 방법
날짜 필드에서 월별로만 그룹화하고 일별로 그룹화하지 않으려면 어떻게해야합니까?
내 날짜 필드는 다음과 같습니다.
2012-05-01
내 현재 SQL은 다음과 같습니다.
select Closing_Date, Category, COUNT(Status)TotalCount from MyTable
where Closing_Date >= '2012-02-01' and Closing_Date <= '2012-12-31'
and Defect_Status1 is not null
group by Closing_Date, Category
나는 이것을 사용할 것이다 :
SELECT Closing_Date = DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0),
Category,
COUNT(Status) TotalCount
FROM MyTable
WHERE Closing_Date >= '2012-02-01'
AND Closing_Date <= '2012-12-31'
AND Defect_Status1 IS NOT NULL
GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), Category;
매월 1 일에 그룹화되므로
`DATEADD(MONTH, DATEDIFF(MONTH, 0, '20130128'), 0)`
줄 것이다 '20130101'
. 일반적으로 날짜를 날짜로 유지하므로이 방법을 선호합니다.
또는 다음과 같이 사용할 수 있습니다.
SELECT Closing_Year = DATEPART(YEAR, Closing_Date),
Closing_Month = DATEPART(MONTH, Closing_Date),
Category,
COUNT(Status) TotalCount
FROM MyTable
WHERE Closing_Date >= '2012-02-01'
AND Closing_Date <= '2012-12-31'
AND Defect_Status1 IS NOT NULL
GROUP BY DATEPART(YEAR, Closing_Date), DATEPART(MONTH, Closing_Date), Category;
원하는 출력이 무엇인지에 따라 다릅니다. (귀하의 예에서 마감 연도는 필요하지 않지만 날짜 범위가 연도 경계를 넘으면 그럴 수 있습니다).
DATEPART 함수를 사용하여 날짜에서 월을 추출합니다.
따라서 다음과 같이 할 수 있습니다.
SELECT DATEPART(month, Closing_Date) AS Closing_Month, COUNT(Status) AS TotalCount
FROM t
GROUP BY DATEPART(month, Closing_Date)
이를 위해 FORMAT 함수를 사용했습니다.
select
FORMAT(Closing_Date, 'yyyy_MM') AS Closing_Month
, count(*) cc
FROM
MyTable
WHERE
Defect_Status1 IS NOT NULL
AND Closing_Date >= '2011-12-01'
AND Closing_Date < '2016-07-01'
GROUP BY FORMAT(Closing_Date, 'yyyy_MM')
ORDER BY Closing_Month
추가함으로써 MONTH(date_column)
에서 GROUP BY
.
SELECT Closing_Date, Category, COUNT(Status)TotalCount
FROM MyTable
WHERE Closing_Date >= '2012-02-01' AND Closing_Date <= '2012-12-31'
AND Defect_Status1 IS NOT NULL
GROUP BY MONTH(Closing_Date), Category
DATEPART function doesn't work on MySQL 5.6, instead use MONTH('2018-01-01')
SELECT to_char(Closing_Date,'MM'),
Category,
COUNT(Status) TotalCount
FROM MyTable
WHERE Closing_Date >= '2012-02-01'
AND Closing_Date <= '2012-12-31'
AND Defect_Status1 IS NOT NULL
GROUP BY Category;
You can do this by using Year(), Month() Day() and datepart().
In you example this would be:
select Closing_Date, Category, COUNT(Status)TotalCount from MyTable
where Closing_Date >= '2012-02-01' and Closing_Date <= '2012-12-31'
and Defect_Status1 is not null
group by Year(Closing_Date), Month(Closing_Date), Category
Try the Following Code
SELECT Closing_Date = DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0),
Category,
COUNT(Status) TotalCount
FROM MyTable
WHERE Closing_Date >= '2012-02-01'
AND Closing_Date <= '2012-12-31'
AND Defect_Status1 IS NOT NULL
GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), Category;
참고URL : https://stackoverflow.com/questions/14565788/how-to-group-by-month-from-date-field-using-sql
반응형
'Program Tip' 카테고리의 다른 글
인스턴스 이니셜 라이저는 생성자와 어떻게 다릅니 까? (0) | 2020.10.29 |
---|---|
fread는 실제로 어떻게 작동합니까? (0) | 2020.10.29 |
localhost URL에 하위 도메인 추가 (0) | 2020.10.29 |
인수에 대한 밑줄이있는 Python의 람다? (0) | 2020.10.29 |
클래스를 사용하는 모든 파일에 한 줄의 코드를 추가하지 않고 C #에서 클래스 이름에 별칭을 지정하려면 어떻게해야합니까? (0) | 2020.10.28 |