36 lines
1.7 KiB
SQL
36 lines
1.7 KiB
SQL
WITH gtime AS (
|
|
SELECT MAX("time") AS time FROM "glucose-processed-full" LIMIT 1
|
|
),
|
|
stime AS (
|
|
SELECT MIN("glucose-processed"."time") AS time FROM "glucose-processed" LIMIT 1
|
|
),
|
|
avgs AS (
|
|
SELECT "glucose-processed"."time",
|
|
"glucose-processed".smoothval,
|
|
"glucose-processed".absvalue,
|
|
"glucose-processed".delta1st,
|
|
"glucose-processed".delta2nd,
|
|
ema("glucose-processed".delta1st, 0.25::real) OVER (ORDER BY "glucose-processed"."time") AS smoothdelta1st,
|
|
ema("glucose-processed".delta2nd, 0.25::real) OVER (ORDER BY "glucose-processed"."time") AS smoothdelta2nd,
|
|
stddev("glucose-processed".delta1st) OVER (ORDER BY "glucose-processed"."time" RANGE BETWEEN '02:00:00'::interval PRECEDING AND CURRENT ROW) AS std_dev_delta1st,
|
|
avg("glucose-processed".absvalue) OVER (ORDER BY "glucose-processed"."time" RANGE BETWEEN '3 mons'::interval PRECEDING AND CURRENT ROW) AS "3mo_eabg",
|
|
avg("glucose-processed".absvalue) OVER (ORDER BY "glucose-processed"."time" RANGE BETWEEN '7 days'::interval PRECEDING AND CURRENT ROW) AS "7day_eabg"
|
|
FROM "glucose-processed"
|
|
LEFT JOIN "stime" ON 1=1
|
|
LEFT JOIN "gtime" ON 1=1
|
|
WHERE "glucose-processed"."time" >= COALESCE(gtime.time, stime.time)
|
|
ORDER BY "glucose-processed"."time"
|
|
)
|
|
SELECT "time",
|
|
smoothval,
|
|
absvalue,
|
|
delta1st,
|
|
delta2nd,
|
|
smoothdelta1st,
|
|
smoothdelta2nd,
|
|
std_dev_delta1st,
|
|
"3mo_eabg",
|
|
"7day_eabg",
|
|
("3mo_eabg" + 46.7::double precision) / 28.7::double precision AS "3mo_ea1c",
|
|
("7day_eabg" + 46.7::double precision) / 28.7::double precision AS "7day_ea1c"
|
|
FROM avgs
|