it-source

SQL Server GROUP BY 날짜 및 합계 값이 포함된 선택 시간 무시(분 단위)

criticalcode 2023. 4. 26. 23:23
반응형

SQL Server GROUP BY 날짜 및 합계 값이 포함된 선택 시간 무시(분 단위)

두 개의 필드가 있는 테이블이 있습니다.datetime그리고.int저는 다음 시간에 그룹을 하고 싶습니다.datetime시간과 분을 무시한 날짜에만 해당됩니다.SELECT문은 하루의 int 합계에 매핑되는 날짜를 반환해야 합니다.

SELECT CAST(Datetimefield AS DATE) as DateField, SUM(intfield) as SumField
FROM MyTable
GROUP BY CAST(Datetimefield AS DATE)

사용하는 SQL 서버 버전을 지정하지 않았기 때문에 (date2005년에는 유형을 사용할 수 없음)을 사용할 수도 있습니다.

SELECT CONVERT(VARCHAR(10),date_column,112),SUM(num_col) AS summed
FROM table_name
GROUP BY CONVERT(VARCHAR(10),date_column,112)

저는 이를 위해 필요한 옵션을 조사하러 왔지만, 제가 사용하는 방법이 가장 단순하다고 생각합니다.

SELECT COUNT(*), 
       DATEADD(dd, DATEDIFF(dd, 0, date_field),0) as dtgroup 
FROM TABLE 
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, date_field),0) 
ORDER BY dtgroup ASC;

데이터 유형과 형식이 날짜 시간 데이터 유형과 일치하기 때문에 좋습니다.

;with cte as(
    select 
        cast(utcdate as date) UtcDay, DATEPART(hour, utcdate) UtcHour, count(*) as Counts
    from dbo.mytable cd 
    where utcdate between '2014-01-14' and '2014-01-15'
    group by
        cast(utcdate as date), DATEPART(hour, utcdate)
)
select dateadd(hour, utchour, cast(utcday as datetime)) as UTCDateHour, Counts
from cte

개인적으로 저는 날짜 부분을 아주 쉽게 변경할 수 있는 포맷 기능을 선호합니다.

     declare @format varchar(100) = 'yyyy/MM/dd'
     select 
        format(the_date,@format), 
        sum(myfield) 
     from mytable 
     group by format(the_date,@format) 
     order by format(the_date,@format) desc;

언급URL : https://stackoverflow.com/questions/7417017/sql-server-group-by-datetime-ignore-hour-minute-and-a-select-with-a-date-and-sum

반응형