반응형
sql을 사용하여 날짜 필드에서 월별로 그룹화하는 방법
날짜 필드에서 월 단위로만 그룹화하고 일 단위로 그룹화하지 않으려면 어떻게 해야 합니까?
내 날짜 필드는 다음과 같습니다.
2012-05-01
현재 SQL은 다음 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
사용해 보십시오.
select min(closing_date), date_part('month',closing_date) || '-' || date_part('year',closing_date) AS month,
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, Category,
ORDER BY 1
이렇게 하면 연결된 날짜 형식으로 그룹화되고 -이 결합됩니다.
위의 SQL Server 2012 버전,
SELECT format(Closing_Date,'yyyy-MM') as ClosingMonth,
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 format(Closing_Date,'yyyy-MM'), Category;
MySQL 5.6에서 DATEPART 기능이 작동하지 않고 MONG('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;
연도(), 월() 일() 및 날짜 부분()을 사용하여 이 작업을 수행할 수 있습니다.
예를 들어 다음과 같습니다.
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
다음 코드를 사용해 보십시오.
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
반응형
'programing' 카테고리의 다른 글
Bash의 기존 파일 하단에 파일 내용 추가 (0) | 2023.04.28 |
---|---|
Eclipse 콘솔 크기 조정 (0) | 2023.04.28 |
Bash의 단일 행 동안 루프 구문 (0) | 2023.04.28 |
부울 및 두 개의 가시성 변환기를 사용하는 방법 (0) | 2023.04.28 |
Xcode 6 이상에서 카테고리를 만들려면 어떻게 해야 합니까? (0) | 2023.04.28 |