gpt4 book ai didi

sql - 按时间段聚合 SQL 列值

转载 作者:行者123 更新时间:2023-12-03 00:07:27 24 4
gpt4 key购买 nike

我有一些每 5 分钟出现一次的数值数据(即每天 288 个值,以及相当多天的数据)。我需要编写一个查询,可以返回每天所有值的总和。目前该表如下所示:

03/30/2010 00:01:00  --   553   
03/30/2010 00:06:00 -- 558
03/30/2010 00:11:00 -- 565
03/30/2010 00:16:00 -- 565
03/30/2010 00:21:00 -- 558
03/30/2010 00:26:00 -- 566
03/30/2010 00:31:00 -- 553
...

这种情况持续“x”天,我希望查询返回“x”行,每行包含每天所有值的总和。像这样的事情:

03/30/2010  --  <sum>
03/31/2010 -- <sum>
04/01/2010 -- <sum>

查询将进入 Dundas Web 部件内部,因此不幸的是我无法编写自定义用户函数来协助它。所有逻辑都需要位于一个大查询中。任何帮助将不胜感激,谢谢。我目前正在尝试使用 GROUP BY 和 DATEPART 让它工作,不确定这是否是正确的方法。

最佳答案

我不明白如何使用 DATEPART 来实现此目的,因为它不能仅返回 DATETIME 值的日期部分(如果我弄错了,请纠正我)。有效的方法是使用 DATEADD 将时间“null”,并按 YYYY-MM-DD 00:00:00.000 形式的值进行分组。

以下查询适用于 Adventure Works 数据库(如果您碰巧拥有该数据库)(在 SQL Server 2005 上测试)。除了使用 DATEADD 之外,它与 @OMG Ponies 建议非常相似:

select
dateadd(dd, 0, datediff(dd, 0, OrderDate)) as SaleDay
, sum(taxamt) as Amount
from
Sales.SalesOrderHeader
group by
dateadd(dd, 0, datediff(dd, 0, OrderDate))
order by
SaleDay

dateadd(dd, 0, datediff(dd, 0, OrderDate)) 的想法是首先获取“从时间开始到您的日期经过的天数”(datediff-part),然后将此天数添加到“开始时间”。这给了你“新的一天的开始”。我希望这是可以理解的:)

关于sql - 按时间段聚合 SQL 列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2550594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com