【问题标题】:Count Items in list betwen time range SQL在时间范围SQL之间计算列表中的项目
【发布时间】:2014-12-12 02:48:05
【问题描述】:

我有一个表格,可以为我提供每次操作发生的时间戳。从第一个动作开始,我想计算一个动作每 30 分钟发生多少次。 例如,假设我有 10 条记录,有时会签名: 16:29, 16:32,16:35,16:38,16:45,16:46,,16:47,16:58,16:59,17:15

我希望返回类似于:

16:00: 1

16:30: 8

17:00: 1

如何让这些项目在相应的时间段内正确分组? 我创建了一个临时表,其中包含列的 MAX 和 MIN 值之间的 30 分钟间隔,但我希望它从第一个新小时时间 (:00) 开始,并以 30 分钟的间隔从那里开始计算上面定义的记录

DECLARE @counter smalldatetime,
@startDate smalldatetime,
@endDate smalldatetime,
@interval int = 30

SET @startDate =
(SELECT MIN(date)
FROM table)

SET @endDate =
(SELECT MAX(date)
FROM table)

SET @counter = @startDate
DECLARE @returnDates TABLE (
[date] smalldatetime)

WHILE @counter <= @endDate
BEGIN
INSERT INTO @returnDates ([date])
VALUES (@counter)
SET @counter = DATEADD(n, @interval, @counter)

END

【问题讨论】:

    标签: sql tsql


    【解决方案1】:

    只需要第二张桌子
    表30

    minAct,  min30  
    00, 00
    01, 00
    ...
    29, 00
    30, 30 
    31, 30 
    ...
    59, 30 
    

    这只是处理会议记录

    select table30.min30, count(*) 
      from time 
      join table30 
        on table30.minAct = time.min 
     group by table30.min30
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多