diff --git a/sql/materialze-gluecose-processing.sql b/sql/materialze-gluecose-processing.sql new file mode 100644 index 0000000..9fe9ac0 --- /dev/null +++ b/sql/materialze-gluecose-processing.sql @@ -0,0 +1,18 @@ +WITH gtime AS ( + SELECT MAX("time") AS time FROM "glucose-processed" LIMIT 1 +), +stime AS ( +SELECT MIN("glucose-import"."time") AS time FROM "glucose-import" LIMIT 1 +) +INSERT INTO "glucose-processed" +SELECT gv."time", + absvalue, + delta1st, + delta2nd, + smoothval +FROM "glucose-view" AS gv +LEFT JOIN gtime ON 1=1 +LEFT JOIN stime ON 1=1 +WHERE gv."time" >= COALESCE(gtime.time, stime.time) AND delta1st IS NOT NULL AND delta2nd IS NOT NULL +ORDER BY gv."time" ASC +ON CONFLICT ("time") DO NOTHING; diff --git a/sql/render-glucose-graphs.sql b/sql/render-glucose-graphs.sql new file mode 100644 index 0000000..a949e7a --- /dev/null +++ b/sql/render-glucose-graphs.sql @@ -0,0 +1,36 @@ + 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