0

変数の値の変更を格納する次の表があるとします。

Timestamp    Value
13:14        12
14:25        33
15:13        24
15:41        48
16:31        54
17:00        63
19:30        82
22:30        13

以下を出力するクエリを作成する必要があります。

Timestamp    Value
14:00        12
15:00        33
16:00        48
17:00        63
18:00        63
19:00        63
20:00        82
21:00        82
22:00        82
23:00        13
And so on...

望ましい出力を達成するための正しいアプローチは何でしょうか?

前もって感謝します。

4

1 に答える 1

0

date_trunc() と日付/時刻演算子を使用する

まとめの例

user=# select datetime from tbl_test limit 1;
        datetime
------------------------
 2013-07-26 15:36:00+09
(1 row)

user=# select date_trunc('hour', datetime) + interval '1 hour'
       from tbl_test limit 1
        ?column?
------------------------
 2013-07-26 16:00:00+09
(1 row)

フォーマットの例

user=# select to_char(date_trunc('hour', datetime) + interval '1 hour', 'HH24:MI')
              from tbl_test limit 1;
 to_char
---------
 16:00
(1 row)

更新: ウィンドウ関数を使用して最新のものを選択できます。

SELECT DISTINCT x.timestamp, last_value(x.value) OVER (PARTITION BY x.timestamp)
FROM (SELECT TO_CHAR(date_trunc('hour', timestamp) + INTERVAL '1 hour', 'HH24:MI') AS timestamp, value 
      FROM tbl_test) as x
ORDER BY x.timestamp;

postgresql リファレンス:

  1. 9.9. 日付/時刻関数と演算子
  2. 9.8. データ型フォーマット関数
于 2013-10-17T03:48:08.603 に答える