我浏览了论坛,发现了各种解决方案,如何将每小时的数据点变成半小时或每季度的数据点,但是当遇到我的特殊问题时,我找不到适用于MSSQL的解决方案。
这是我拥有的代码类型:
SELECT
time,
sum(value) as total_hourly_value
FROM database
WHERE time >= '2021-03-02' and time < '2021-03-03'
GROUP BY time
我的问题是它返回的值是这样的:
time total_hourly_value
02/03/2021 00:00 50
02/03/2021 01:00 40
02/03/2021 02:00 30
我想要达到的目的是通过以下方式扩展每小时的汇总值:
time total_hourly_value
02/03/2021 00:00 50
02/03/2021 00:15 50
02/03/2021 00:30 50
02/03/2021 00:45 50
02/03/2021 01:00 40
02/03/2021 01:15 40
02/03/2021 01:30 40
02/03/2021 01:45 40
02/03/2021 02:00 30
02/03/2021 02:15 30
02/03/2021 02:30 30
02/03/2021 02:45 30
请SQL向导,助您一臂之力。
您可以使用generate_series()
:
SELECT time + gs.n * INTERVAL '15 MINUTE' as time, total_hourly_value
FROM (SELECT time,
sum(value) as total_hourly_value
FROM database
WHERE time >= '2021-03-02' and time < '2021-03-03'
GROUP BY time
) t CROSS JOIN
GENERATE_SERIES(0, 3) GS(n);
在SQL Server中,代码如下所示:
SELECT dateadd(minute, 15 * n.n, time) as time, total_hourly_value
FROM (SELECT time,
sum(value) as total_hourly_value
FROM database
WHERE time >= '2021-03-02' and time < '2021-03-03'
GROUP BY time
) t CROSS JOIN
(VALUES (0), (1), (2), (3)) v(n)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句