質問するログイン新規登録

回答編集履歴

2

サンプルコードの結果も添えて

2019/11/15 10:28

投稿

退会済みユーザー
answer CHANGED
@@ -12,6 +12,6 @@
12
12
  ) as tt on t1.日時 = tt.日時
13
13
  order by t1.日時
14
14
  ```
15
+ ![実行結果](4209baf4e8f47edda7e12c7c5b127f7a.png)
15
16
  示されたデータ構造でテーブル t_223381 を作って動かしました。
16
- 先に示したやり方では、常に5で割ってしまうため、
17
17
  値が存在する日時をcountで求めて割ることによって、正しく平均値を求めるようにしています。

1

見直し

2019/11/15 10:28

投稿

退会済みユーザー
answer CHANGED
@@ -5,11 +5,13 @@
5
5
  from t_223381 as t1
6
6
  left join t_223381 as t2 on t1.日時 = t2.日時 + '1 minute'::interval
7
7
  left join (
8
- select t3.日時, sum(t4.値) / 5 as "平均値"
8
+ select t3.日時, sum(t4.値) / count(t4.日時) as "平均値"
9
9
  from t_223381 as t3, t_223381 as t4
10
10
  where t4.日時 between t3.日時 + '-4 minutes'::interval and t3.日時
11
11
  group by t3.日時
12
12
  ) as tt on t1.日時 = tt.日時
13
13
  order by t1.日時
14
14
  ```
15
- 示されたデータ構造でテーブル t_223381 を作って動かしました。
15
+ 示されたデータ構造でテーブル t_223381 を作って動かしました。
16
+ 先に示したやり方では、常に5で割ってしまうため、
17
+ 値が存在する日時をcountで求めて割ることによって、正しく平均値を求めるようにしています。