df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

时间窗口滑动

困难 16-window-cumulative 窗口:累计与滑动 rollingtime-windowrange-frameirregular

对每个传感器的每条读数,统计过去 1 小时内的读数个数和平均温度。读数间隔不规则。

  • 时间窗口是左开右闭区间 (ts - 1 小时, ts]:恰好在 1 小时之前的那条读数不算,当前这条读数算。
  • 只看同一个 sensor_id 的读数。
  • n:窗口内的读数行数(temperature 为 null 的读数也算一行)。
  • avg_temp:窗口内非 null temperature 的平均值;窗口内全是 null 时为 null。
  • 本题不做数据清洗:-999 这类哨兵值也按普通数值参与平均。
  • 同一传感器的 ts 不重复;表里的行不保证有序。

输入

  • readings(sensor_id, ts, temperature, humidity)

输出

列为 sensor_id, ts, n, avg_temp,每条读数一行,行顺序不限。

输入表 (case base,共 2 个 case:base、edge)

readings iot/readings
#sensor_idstringtsdatetimetemperaturefloat64humidityfloat64
1 s01 2026-09-01 00:23:47 21.7 60.2
2 s01 2026-09-01 00:45:48 22.1 60.2
3 s01 2026-09-01 00:59:29 22.2 46.2
4 s01 2026-09-01 01:12:53 22.3 51.3
5 s01 2026-09-01 01:37:08 22.5 43.4
6 s01 2026-09-01 01:55:18 22.5 57.9
7 s01 2026-09-01 02:03:26 22.3 39.0
8 s01 2026-09-01 02:09:39 22.1 58.2
9 s01 2026-09-01 02:21:34 22.2 41.0
10 s01 2026-09-01 02:33:45 22.4 63.2
11 s01 2026-09-01 02:46:42 null 47.4
12 s01 2026-09-01 02:56:58 null 37.0
13 s01 2026-09-01 03:12:50 null 55.3
14 s01 2026-09-01 03:28:54 22.4 44.3
15 s01 2026-09-01 03:44:24 22.3 49.2
16 s01 2026-09-01 03:55:27 22.1 42.7
17 s01 2026-09-01 04:02:14 21.9 51.5
18 s01 2026-09-01 04:21:37 -999.0 46.3
19 s01 2026-09-01 04:28:05 22.4 63.7
20 s01 2026-09-01 04:40:12 22.4 57.7
显示前 20 行,共 600 行

期望输出 (case base,行顺序不限)

#sensor_idStringtsDatetime(time_unit='us', time_zone=None)nInt64avg_tempFloat64
1 s03 2026-09-01 00:32:42 1 19.7
2 s03 2026-09-01 00:56:43 2 19.7
3 s03 2026-09-01 01:18:56 3 19.7
4 s03 2026-09-01 01:36:35 3 19.73333333
5 s03 2026-09-01 01:55:54 4 19.775
6 s03 2026-09-01 02:08:58 4 19.825
7 s03 2026-09-01 02:17:40 5 19.88
8 s03 2026-09-01 02:40:53 4 19.975
9 s03 2026-09-01 02:49:50 5 20.02
10 s03 2026-09-01 03:09:15 4 20.175
11 s03 2026-09-01 03:27:39 4 20.2
12 s03 2026-09-01 03:44:03 4 20.3
13 s03 2026-09-01 04:07:47 4 20.4
14 s03 2026-09-01 04:20:05 4 20.7
15 s03 2026-09-01 04:34:56 4 20.45
16 s03 2026-09-01 04:54:45 4 20.23333333
17 s03 2026-09-01 05:03:21 5 19.975
18 s03 2026-09-01 05:22:47 4 19.55
19 s03 2026-09-01 05:44:20 4 19.2
20 s03 2026-09-01 05:52:58 5 19.2
21 s03 2026-09-01 06:09:09 4 18.9
22 s03 2026-09-01 06:32:47 4 18.8
23 s03 2026-09-01 06:51:59 4 18.6
24 s03 2026-09-01 07:08:45 4 18.65
25 s03 2026-09-01 07:29:53 4 18.8
26 s03 2026-09-01 07:50:34 4 18.7
27 s03 2026-09-01 08:04:31 4 18.6
28 s03 2026-09-01 08:13:31 4 18.35
29 s03 2026-09-01 08:24:38 5 18.24
30 s03 2026-09-01 08:34:14 5 18.0
31 s03 2026-09-01 08:51:06 5 17.9
32 s03 2026-09-01 09:14:43 4 17.85
33 s03 2026-09-01 09:24:06 5 17.85
34 s03 2026-09-01 09:41:17 4 17.9
35 s03 2026-09-01 09:49:32 5 17.75
36 s03 2026-09-01 09:59:10 5 17.76666667
37 s03 2026-09-01 10:09:53 6 17.85
38 s03 2026-09-01 10:18:24 6 17.9
39 s03 2026-09-01 10:33:25 6 17.98333333
40 s03 2026-09-01 10:46:23 6 18.1
41 s03 2026-09-01 10:56:41 6 18.33333333
42 s03 2026-09-01 11:05:17 6 18.48333333
43 s03 2026-09-01 11:24:38 5 18.7
44 s03 2026-09-01 11:38:04 5 18.78
45 s03 2026-09-01 11:52:46 5 18.82
46 s03 2026-09-01 12:16:16 4 18.75
47 s03 2026-09-01 12:27:50 4 18.775
48 s03 2026-09-01 12:48:12 4 18.675
49 s03 2026-09-01 12:56:12 4 18.6
50 s03 2026-09-01 13:02:28 5 18.54
显示前 50 行,共 600 行