복붙노트

[SQL] 어떻게 그룹에 월별 날짜 필드에서 SQL을 사용하여

SQL

어떻게 그룹에 월별 날짜 필드에서 SQL을 사용하여

어떻게 I의 날짜 필드에서만 한 달에 의해 그룹 (그리고 하루 그룹)?

여기 내 날짜 필드는 모습입니다 :

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

해결법

  1. ==============================

    1.나는 이것을 사용한다 :

    나는 이것을 사용한다 :

    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;
    

    매월 첫째로이 의지 그룹, 그래서

    `DATEADD(MONTH, DATEDIFF(MONTH, 0, '20130128'), 0)` 
    

    '20,130,101'을 줄 것이다. 이 날짜로 날짜를 유지 나는 일반적으로이 방법을 선호합니다.

    또는 당신이 뭔가를 사용할 수 있습니다 :

    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;
    

    정말 원하는 출력이 무엇인지 따라 달라집니다. (결산 년도는 예에 필요하지 않지만 날짜 범위가 올해 교차하는 경우가있을 수 있습니다 경계).

  2. ==============================

    2.날짜에서 월을 추출하는 DATEPART 함수를 사용합니다.

    날짜에서 월을 추출하는 DATEPART 함수를 사용합니다.

    당신은 같은 것을 할 것입니다 그래서 :

    SELECT DATEPART(month, Closing_Date) AS Closing_Month, COUNT(Status) AS TotalCount
    FROM t
    GROUP BY DATEPART(month, Closing_Date)
    
  3. ==============================

    3.나는이 작업을 수행하기 위해 FORMAT 기능을 사용 :

    나는이 작업을 수행하기 위해 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
    
  4. ==============================

    4.GROUP BY에서 MONTH (date_column)를 추가하여.

    GROUP BY에서 MONTH (date_column)를 추가하여.

    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
    
  5. ==============================

    5.DATEPART 함수는 MONTH 대신 사용, MySQL은 5.6에 대한 작업을하지 않습니다 ( '2018년 1월 1일')

    DATEPART 함수는 MONTH 대신 사용, MySQL은 5.6에 대한 작업을하지 않습니다 ( '2018년 1월 1일')

  6. ==============================

    6.

    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;
    
  7. ==============================

    7.이 시도:

    이 시도:

    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
    

    a로 합류 당신이 연결된 날짜 형식으로 그룹화하는이 방법 -

  8. ==============================

    8.당신은 년 () 월 () 일 ()와 DATEPART ()를 사용하여이 작업을 수행 할 수 있습니다.

    당신은 년 () 월 () 일 ()와 DATEPART ()를 사용하여이 작업을 수행 할 수 있습니다.

    당신이 예에서이 될 것이다 :

    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
    
  9. ==============================

    9.다음 코드를 사용해보십시오

    다음 코드를 사용해보십시오

    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;
    
  10. from https://stackoverflow.com/questions/14565788/how-to-group-by-month-from-date-field-using-sql by cc-by-sa and MIT license