SQL 服务器日期时间偏移量数据聚合



我目前正在开发一个使用 SQL 数据库的应用程序。在这个数据库中,我维护了一个名为session的表,它有三个字段:会话ID(int),date_created(datetimeoffset)和date_expired(datetimeoffset)字段。

我想将我的会话分组到会话的组中,会话的最小date_created和最大date_expired不超过 6 小时。另外,我不希望我的组重叠,即如果会话 s1 属于组 1,我不希望它也在组 2 中。

有什么想法吗?

我建议您创建 4 个数据组,例如 0-6、6-12、12-18 和 18-24,因此您可以这样做:

仅供参考:为简单起见,我只对日期列进行了case,您需要在date_created和date_expired之间使用日期差异

仅供参考2:更改两者之间的值,因为它更适合您,最后查询将返回值为1,2,3和4,您应该将其更改为"0到6","6到12"等等。

with MyCTE as (
    select case 
            when datepart(hh,date ) between 0 and 6 then 1
            when datepart(hh,date ) between 6 and 12 then 2
            when datepart(hh,date ) between 13 and 18 then 3
            else 4
            end
          as myDatebucket 
    , *
    from session
) 
select myDatebucket, count(*)
from MyCTE
group by myDatebucket
order by myDatebucket

最新更新