sql - 按日期范围分组
问题描述
我已经阅读了一些关于按顺序分组的主题,但我无法找到解决问题的方法。
我有一张这样的桌子(名字是ViewHistory
)。
Tme Value
2020-07-22 09:30:00 1
2020-07-22 09:31:00 2
2020-07-22 09:32:00 3
2020-07-22 09:33:00 4
2020-07-22 09:34:00 5
2020-07-22 09:35:00 6
.
.
.
数据可以无限增长。
在这个表中,有很多带有1 min
TimeFrame 的记录。
我想用 timeFrame2 min
和Sum(value)
. 像这样的输出:
TimeFrame SumData
09:30 1
09:32 5 -- sum of range 09:31_09:32
09:34 9 -- sum of range 09:33_09:34
.
.
.
如何自动执行此操作,而不是使用:
WHERE Tme BETWEEN ('2020-07-22 09:31:00' AND '2020-07-22 09:32:00')
等等。
解决方案
我确信有一种更简单的方法,但它现在还没有出现。
declare @Test table (tme datetime2, [value] int)
insert into @Test (tme, [value])
values
('2020-07-22 09:30:00', 1),
('2020-07-22 09:31:00', 2),
('2020-07-22 09:32:00', 3),
('2020-07-22 09:33:00', 4),
('2020-07-22 09:34:00', 5),
('2020-07-22 09:35:00', 6);
with cte as (
select convert(date, tme) [date], datepart(hour, tme) [hour], datepart(minute,dateadd(minute, 1,tme)) / 2 [minute], sum([value]) [value]
from @Test
group by convert(date, tme), datepart(hour, tme), datepart(minute,dateadd(minute, 1,tme)) / 2
)
select convert(varchar(2),[hour]) + ':' + convert(varchar(2), [minute] * 2) [time], [value]
-- , dateadd(minute, [minute] * 2, dateadd(hour, [hour], convert(datetime2, [date]))) -- Entire date if desired
from cte;
这使:
时间 | 价值 |
---|---|
9:30 | 1 |
9:32 | 5 |
9:34 | 9 |
9:36 | 6 |
推荐阅读
- msbuild - MSBUILD:记录器错误 MSB4104:无法写入日志文件“XYZ.sln.log”
- java - 如何在 SceneBuilder 中正确指定 ImageView 的 URL
- java - 对动态代理的调用应该转到动态类型的方法还是静态类型的方法?
- javascript - 在多日期选择器中选择 2 个日期后,月份会自动移动
- android - 如何从这个 JSON 字符串中删除这个符号?
- r - R闪亮的下载选项
- javascript - post-data 是否需要 ajax/post 请求中的 json-object 周围的单引号?
- python - 使用python将文本文件表示为列表
- c# - c#中的异步等待丢失响应
- json - Dancer2 对服务器上的所有内容进行字符串化,但不在本地