当前位置: 首页 > 面试题库 >

SQL SERVER-按n分钟间隔对记录进行分组

淳于星宇
2023-03-14
问题内容

我有一个这样的表:

     [SDate - DateTime]              [Value - Decimal]
    2010-11-16 10:32:22                     1
    2010-11-16 10:58:08                     2

我需要一个查询以n分钟的间隔对记录进行分组。

例如,输出(按60分钟分组):

    2010-11-16 10:10:00   avg(Value)
    2010-11-16 10:11:00   avg(Value)
    2010-11-16 10:12:00   avg(Value)

到目前为止,由于间隔介于0到60分钟之间,因此我一直在使用此查询按10分钟间隔进行分组:

...
GROUP BY
DATEPART(YEAR, SDate),
DATEPART(MONTH, SDate),
DATEPART(DAY, SDate),
DATEPART(HOUR, SDate),
(DATEPART(MINUTE, SDate) / 10)

但是现在间隔可以是例如 125436758 分钟。

我无法创建新表,并且用户定义的间隔必须为n分钟。我正在使用SQL SERVER2012。谢谢。


问题答案:
GROUP BY 
...
(DATEDIFF(MINUTE, 0, SDate) / @n)


 类似资料:
  • 问题内容: 我有一个监视系统,它每n秒收集一次数据(n大约为10,但有所不同)。我想每隔15分钟汇总一次收集的数据。有没有一种方法可以将时间戳记值合并为15分钟的块,以便分组工作? 问题答案:

  • 我有一个按小时对记录进行分组的查询,如下所示: 这将记录分为一个小时窗口,每个小时窗口从第0分钟开始。 这个需求的一点背景:我有一个自动测试,它会导致数据库被填充。在我的测试开始之前,数据库可能已经有了一些记录。我的自动测试的目标是每小时完成一定数量的任务。我正在寻找一种方法来验证我的测试的准确性,方法是在DB中为每小时生成一个报告,其中每小时从匹配条件的第一条记录的时间戳(分钟)开始(我可以定义

  • 我得到的数据集如下所示: 我想按时间字段对其进行分组,并获取每个时间间隔的MAX(openBid),并拥有最后5个间隔(在本例中为5分钟)。我使用这个查询: 结果如下: 我遇到的问题是,随着时间的推移,结果集中第一条记录的计数从1增加到5。在这个例子中,它是3。我希望我的查询在所有时间间隔内都有相同数量的记录。我认为问题是GROUP BY准时从集合的第一条记录开始。由于我正在执行ORDER BY

  • 问题内容: 我有一个包含datetime列和一些其他列的表。datetime列表示发生的事件。它可以包含一个时间(事件在那个时间发生)或NULL(事件没有发生) 我现在想计算在特定时间间隔(15分钟)内发生的记录数,但是不知道该怎么做。 例子: 现在,我想创建一个查询,该查询将创建类似于以下内容的结果集: 这在SQL中可能吗,或者有人可以建议我可以使用哪些其他工具?(例如,将数据导出到电子表格程序

  • 问题内容: 我需要将表分组为15分钟间隔。我可以这样做: 但是要在图表中显示返回的数据,我还需要插入没有任何数据且当前未出现在我的select语句中的间隔。我该如何插入这些? 问题答案: 用15分钟的增量创建一个带有所有可能时间戳的表,然后从该表向上面的查询进行LEFT JOIN。 如果您知道图表始终涵盖24小时,则只需创建一个数字为0-95的表格,然后为每个条目将其添加到图表的开始时间。

  • 问题内容: 我有一个小问题。我有这样格式的PostgreSQL表 我想按5分钟的时间对它们进行分组,并将该组的平均值作为一个单一值,因此将有20%的记录,每条记录平均包含〜5个数字,而时间设置为中的第一个时间值群组。我不知道如何在PgSQL中执行此操作。因此结果将是: 问题答案: 解释 子查询每5分钟从表中的最小值“到最大值”产生一行记录。 以5分钟为间隔将LEFT JOIN返回表切片数据。仔细