25 lines
720 B
MySQL
25 lines
720 B
MySQL
|
|
-- Migration 035: Backfill caliper lean_mass / fat_mass from nearest weight_log row
|
||
|
|
-- Date: 2026-04-06
|
||
|
|
|
||
|
|
UPDATE caliper_log c
|
||
|
|
SET
|
||
|
|
lean_mass = sub.lean_mass,
|
||
|
|
fat_mass = sub.fat_mass
|
||
|
|
FROM (
|
||
|
|
SELECT
|
||
|
|
c2.id,
|
||
|
|
round((wl.weight::numeric - (wl.weight::numeric * c2.body_fat_pct::numeric / 100.0))::numeric, 2) AS lean_mass,
|
||
|
|
round((wl.weight::numeric * c2.body_fat_pct::numeric / 100.0)::numeric, 2) AS fat_mass
|
||
|
|
FROM caliper_log c2
|
||
|
|
CROSS JOIN LATERAL (
|
||
|
|
SELECT w.weight
|
||
|
|
FROM weight_log w
|
||
|
|
WHERE w.profile_id = c2.profile_id
|
||
|
|
ORDER BY abs(w.date - c2.date) ASC
|
||
|
|
LIMIT 1
|
||
|
|
) wl
|
||
|
|
WHERE c2.body_fat_pct IS NOT NULL
|
||
|
|
AND (c2.lean_mass IS NULL OR c2.fat_mass IS NULL)
|
||
|
|
) sub
|
||
|
|
WHERE c.id = sub.id;
|