4

次の表があります。

ID 値 truncated_day just_yyyy_mm_dd
1167 300 7/1/11 0:00 7/1/11
1167 301 7/1/11 0:00 7/1/11
1167 303 7/1/11 0:00 7/1/11
1167 308 7/1/11 0:00 7/1/11
1167 312 7/2/11 0:00 7/2/11
1167 316 7/2/11 0:00 7/2/11
1167 318 7/2/11 0:00 7/2/11
1167 330 7/2/11 0:00 7/2/11
1700 0 7/1/11 0:00 7/1/11
1700 10 7/1/11 0:00 7/1/11
1700 21 7/1/11 0:00 7/1/11
1700 33 7/1/11 0:00 7/1/11
1700 34 7/2/11 0:00 7/2/11
1700 35 7/2/11 0:00 7/2/11
1700 40 7/2/11 0:00 7/2/11

テーブルは実際には非常に長い (3200 万行以上!!)。

各日、および異なる ID ごとに最大値と最小値 (read_value) を取得したいと考えています。次のクエリを試しましたが、うまくいきません。

'$'select id, 
date_trunc('day', timestamp_utc) as truncated_day, 
substring(cast(date_trunc('day', timestamp_utc) as text) from 1 for 10) as just_yyyy_mm_dd,
max(value) as maxvalue,
min(value) as minvalue
from TABLE
order by device_id, truncated_day'$'

私は基本的にクエリが返すことを望みます:

ID 最小最大 truncated_day just_yyyy_mm_dd
1167 300 308 7/1/11 0:00 7/1/11
1167 312 330 7/2/11 0:00 7/2/11
1700 0 33 7/1/11 0:00 7/1/11
1700 34 40 7/2/11 0:00 7/2/11

このクエリについて教えてください。事前にどうもありがとうございました!N

4

4 に答える 4

2

これを試して。GROUP BY の追加に注意してください。必要に応じて、just_yyyy_mm_dd のものを元に戻すことができます。

select id, 
date_trunc('day', timestamp_utc) as truncated_day, 
max(value) as maxvalue,
min(value) as minvalue
from TABLE
GROUP BY id, date_trunc('day', timestamp_utc)
order by device_id, truncated_day
于 2013-01-11T18:42:15.173 に答える
0
select id, min(value) as 'minvalue', max(value) as 'maxvalue', truncated_day, just_yy_mm_dd
from the_table
group by truncated_day, id, just_yy_mm_dd
于 2013-01-11T18:43:04.950 に答える
0

「order by」の前に「group by」が必要です。基本的に、最初の 3 つのフィールドでグループ化する必要があります。

于 2013-01-11T18:41:57.563 に答える
0

order byに変更する必要がありますgroup by。実際には、おそらく両方が必要です。

select device_id, date_trunc('day', timestamp_utc) as truncated_day, 
           substring(cast(date_trunc('day', timestamp_utc) as text) from 1 for 10) as just_yyyy_mm_dd,
           max(value) as maxvalue,
            min(value) as minvalue
from TABLE
group by device_id, date_trunc('day', timestamp_utc)
order by device_id, truncated_day

うまくいくかどうか興味がありgroup by device_id, truncated_dayます。SQL コンパイラーは just_yyyy_mm_dd 列でエラーを生成しますか? エラーを生成する必要はありませんが、その式が集計列だけにあると認識されない可能性があります。

于 2013-01-11T18:42:39.900 に答える