sql - MySQL: Subtract two values in rows in table A for each member in table B -
i have written code in java , want know if can more efficiently in sql statement.
i have 2 tables. 1 holds member's data, other holds measurements.
members id | name ---------- 001 | mary 002 | jane 003 | anne measurements idmember | date | weight ------------------------------- 001 | 2013-06-21 | 65 002 | 2013-06-23 | 68 003 | 2013-06-21 | 75 001 | 2013-09-20 | 64 002 | 2013-06-21 | 70 001 | 2014-01-18 | 62 003 | 2013-06-21 | 74 002 | 2013-06-21 | 69 what need able find total amount of weight lost (or gained).
this means looking @ each member , subtracting last measurement first , summing total.
thanks!
select sum(s0.w - s1.w) total_weight_loss (select idmember, max(weight) w measurements m m.date = (select min(date) measurements n m.idmember = n.idmember) group idmember) s0 join (select idmember, min(weight) w measurements m m.date = (select max(date) measurements n m.idmember = n.idmember) group idmember) s1 on s0.idmember = s1.idmember edit
since turned out there measurements.id, difficulties related handling of measurements on same date can avoided altogether this:
select sum(s0.w - s1.w) total_weight_loss (select idmember, weight w measurements m m.id = (select min(id) measurements n m.idmember = n.idmember)) s0 join (select idmember, weight w measurements m m.id = (select max(id) measurements n m.idmember = n.idmember)) s1 on s0.idmember = s1.idmember
Comments
Post a Comment