35 lines
1.0 KiB
SQL
35 lines
1.0 KiB
SQL
INSERT INTO miner_status_hourly_rollups (
|
|
miner_id,
|
|
bucket_at,
|
|
sample_count,
|
|
avg_mhs_av,
|
|
max_mhs_av,
|
|
avg_power_w,
|
|
max_chip_temp_c,
|
|
avg_chip_temp_c,
|
|
avg_pool_rejected_percent,
|
|
updated_at
|
|
)
|
|
SELECT
|
|
miner_id,
|
|
date_trunc('hour', observed_at) AS bucket_at,
|
|
COUNT(*) AS sample_count,
|
|
AVG(mhs_av)::double precision,
|
|
MAX(mhs_av)::double precision,
|
|
AVG(power_w)::double precision,
|
|
MAX(chip_temp_max_c)::double precision,
|
|
AVG(chip_temp_avg_c)::double precision,
|
|
AVG(pool_rejected_percent)::double precision,
|
|
now()
|
|
FROM miner_status_snapshots
|
|
GROUP BY miner_id, date_trunc('hour', observed_at)
|
|
ON CONFLICT (miner_id, bucket_at) DO UPDATE
|
|
SET sample_count = EXCLUDED.sample_count,
|
|
avg_mhs_av = EXCLUDED.avg_mhs_av,
|
|
max_mhs_av = EXCLUDED.max_mhs_av,
|
|
avg_power_w = EXCLUDED.avg_power_w,
|
|
max_chip_temp_c = EXCLUDED.max_chip_temp_c,
|
|
avg_chip_temp_c = EXCLUDED.avg_chip_temp_c,
|
|
avg_pool_rejected_percent = EXCLUDED.avg_pool_rejected_percent,
|
|
updated_at = now();
|