【问题标题】:SQL - Group results by time intervalSQL - 按时间间隔对结果进行分组
【发布时间】:2012-10-04 09:02:48
【问题描述】:

使用给定的表结构(eventTime 以秒为单位)我想按给定的时间范围对结果进行分组:

例如:5 分钟

0 to 5:   1 
5 to 10:  2
10 to 15: 3
.....

如何在 SQL Server 2012 中做到这一点?

谢谢!

弗洛里安

CREATE TABLE [dbo].[evalHubSupply](
[evalHubSupplyId] [int] IDENTITY(1,1) NOT NULL,
[projectId] [int] NOT NULL,
[scenarioId] [int] NOT NULL,
[iterationId] [int] NOT NULL,
[evalExportId] [int] NOT NULL,
[eventType] [varchar](50) NOT NULL,
[eventTime] [int] NOT NULL,
[stopId] [varchar](50) NOT NULL,
[stopName] [varchar](50) NULL,
[vehicleId] [varchar](50) NOT NULL,
[transitLineId] [varchar](50) NULL,
[transitRouteId] [varchar](50) NULL,
[capacity] [int] NULL,
[arrivalTimeAtStop] [int] NULL,
[agentsOnBoard] [int] NULL)

样本数据(间隔1小时):

https://dl.dropbox.com/u/481455/table_data.xlsx 或者 https://dl.dropbox.com/u/481455/table_data_open.ods

“表格数据”选项卡包含来自 evalHubSupply 的示例数据。 “时间间隔”列计算与 eventTime 相关的间隔(在本例中为每小时)。结果选项卡会计算与特定时间间隔相关的事件数。

【问题讨论】:

    标签: sql time frame sql-server-2012 intervals


    【解决方案1】:

    这将给出每 5 分钟组中的记录数

    select eventTime/5,count(*)
    from   evalHubSupply
    group by eventTime/5
    

    【讨论】:

    • 嗨,我需要按 eventTime(s) 对结果进行分组,它属于特定的时间范围(0 到 5、5 到 10,...)。您的解决方案通过点击特定时间对结果进行分组 - 我的 eventTimes 是唯一的,因此每个事件记录都有一个结果行。
    • 对不起,我不明白你的要求..你能用提供示例数据更新你的问题吗
    • 嘿,抱歉,您的回答完全正确。只需要对 eventTime/XX 进行四舍五入,现在一切都很好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2015-01-05
    相关资源
    最近更新 更多