gpt4 book ai didi

sql - HH 中的每小时平均聚合 = (HH-1) :41 - HH:40 format in PostgreSQL

转载 作者:行者123 更新时间:2023-11-29 13:35:16 28 4
gpt4 key购买 nike

我有时间数据库,我想获得时间序列数据的每小时平均值。

示例数据:

1     -1.64 2007-09-29 00:01:09
2 -1.76 2007-09-29 00:03:09
3 -1.83 2007-09-29 00:05:09
4 -1.86 2007-09-29 00:07:09
5 -1.94 2007-09-29 00:09:09
6 -1.87 2007-09-29 00:11:09
7 -1.87 2007-09-29 00:13:09
8 -1.80 2007-09-29 00:15:09
9 -1.64 2007-09-29 00:17:09
10 -1.60 2007-09-29 00:19:09
11 -1.90 2007-09-29 00:21:09
12 -2.08 2007-09-29 00:23:09
13 -1.94 2007-09-29 00:25:09
14 -2.12 2007-09-29 00:27:09
15 -1.87 2007-09-29 00:29:09
16 -2.18 2007-09-29 00:31:09
17 -1.98 2007-09-29 00:33:09
18 -1.73 2007-09-29 00:35:09
19 -1.84 2007-09-29 00:37:09
20 -2.04 2007-09-29 00:39:09
21 -1.86 2007-09-29 00:41:09
22 -1.94 2007-09-29 00:43:09
23 -1.77 2007-09-29 00:45:09
24 -1.78 2007-09-29 00:47:09
25 -1.50 2007-09-29 00:49:09
26 -1.46 2007-09-29 00:51:09
27 -1.72 2007-09-29 00:53:09
28 -1.67 2007-09-29 00:55:09
29 -1.56 2007-09-29 00:57:09
30 -1.69 2007-09-29 00:59:09
31 -1.97 2007-09-29 01:01:09
32 -1.79 2007-09-29 01:03:09
33 -1.79 2007-09-29 01:05:09
34 -1.84 2007-09-29 01:07:09
35 -1.91 2007-09-29 01:09:09
36 -1.87 2007-09-29 01:11:09
37 -1.98 2007-09-29 01:13:09
38 -1.83 2007-09-29 01:15:09
39 -1.88 2007-09-29 01:17:09
40 -1.88 2007-09-29 01:19:09
41 -1.78 2007-09-29 01:21:09
42 -1.78 2007-09-29 01:23:09
43 -1.66 2007-09-29 01:25:09
44 -1.70 2007-09-29 01:27:09
45 -1.46 2007-09-29 01:29:09
46 -1.36 2007-09-29 01:31:09
47 -1.40 2007-09-29 01:33:09
48 -1.34 2007-09-29 01:35:09
49 -1.34 2007-09-29 01:37:09
50 -1.30 2007-09-29 01:39:09
51 -1.36 2007-09-29 01:41:09
52 -1.40 2007-09-29 01:43:09
53 -1.43 2007-09-29 01:45:09
54 -1.38 2007-09-29 01:47:09
55 -1.40 2007-09-29 01:49:09
56 -1.42 2007-09-29 01:51:09
57 -1.47 2007-09-29 01:53:09
58 -1.66 2007-09-29 01:55:09
59 -1.84 2007-09-29 01:57:09
60 -1.92 2007-09-29 01:59:09
61 -1.88 2007-09-29 02:01:09
62 -2.11 2007-09-29 02:03:09
63 -1.91 2007-09-29 02:05:09
64 -2.04 2007-09-29 02:07:09
65 -1.94 2007-09-29 02:09:09
66 -1.92 2007-09-29 02:11:09
67 -1.80 2007-09-29 02:13:09
68 -1.74 2007-09-29 02:15:09
69 -1.74 2007-09-29 02:17:09
70 -1.76 2007-09-29 02:19:09
71 -1.74 2007-09-29 02:21:09
72 -1.80 2007-09-29 02:23:09
73 -1.80 2007-09-29 02:25:09
74 -1.80 2007-09-29 02:27:09
75 -1.82 2007-09-29 02:29:09
76 -1.90 2007-09-29 02:31:09
77 -1.93 2007-09-29 02:33:09
78 -2.06 2007-09-29 02:35:09
79 -2.08 2007-09-29 02:37:09
80 -1.95 2007-09-29 02:39:09
81 -1.98 2007-09-29 02:41:09
82 -2.32 2007-09-29 02:43:09
83 -1.86 2007-09-29 02:45:09
84 -1.97 2007-09-29 02:47:09
85 -1.64 2007-09-29 02:49:09
86 -2.00 2007-09-29 02:51:09
87 -1.48 2007-09-29 02:53:09
88 -1.74 2007-09-29 02:55:09
89 -1.85 2007-09-29 02:57:09
90 -1.82 2007-09-29 02:59:09
91 -1.82 2007-09-29 03:01:09
92 -1.92 2007-09-29 03:03:09
93 -1.80 2007-09-29 03:05:09
94 -1.54 2007-09-29 03:07:09
95 -1.36 2007-09-29 03:09:09
96 -1.50 2007-09-29 03:11:09
97 -1.59 2007-09-29 03:13:09
98 -1.60 2007-09-29 03:15:09
99 -1.58 2007-09-29 03:17:09
100 -1.81 2007-09-29 03:19:09
101 -2.16 2007-09-29 03:21:09
102 -1.97 2007-09-29 03:23:09
103 -1.94 2007-09-29 03:25:09
104 -2.29 2007-09-29 03:27:09
105 -2.46 2007-09-29 03:29:09
106 -2.42 2007-09-29 03:31:09
107 -2.34 2007-09-29 03:33:09
108 -2.38 2007-09-29 03:35:09
109 -2.44 2007-09-29 03:37:09
110 -2.28 2007-09-29 03:39:09
111 -2.24 2007-09-29 03:41:09
112 -2.26 2007-09-29 03:43:09

应根据以下时间间隔执行聚合:HH = (HH-1):41 - HH:40示例:13 = 观察期 12:41 到 13:40

最佳答案

应该像这样工作:

SELECT  date_trunc('hour', ts + interval '20 min') AS h
,avg(val) as avg_val
FROM t
GROUP BY 1
ORDER BY 1;

我在用 date_trunc() 细化时间之前添加了 20 分钟然后通过它聚合。
请注意,边界时间 08:40 以 9 点钟的平均值结束。

定期每小时网格

...包括基表中没有任何行的小时数:

SELECT *
FROM generate_series('2007-09-28 22:00' -- first hour
,'2007-09-29 05:00' -- last hour
,interval '1h') AS h
LEFT JOIN (
SELECT date_trunc('hour', ts + interval '20 min') AS h
,avg(val) as avg_val
FROM t
GROUP BY 1
ORDER BY 1
) x USING (h);

使用generate_series()和一个LEFT JOIN

-> Updated the sqlfiddle.

关于sql - HH 中的每小时平均聚合 = (HH-1) :41 - HH:40 format in PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14186695/

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