27 lines
897 B
Markdown
27 lines
897 B
Markdown
## Joining to bodymass table by time
|
|
|
|
Data in the bodymass table can be transformed as (for account 1):
|
|
|
|
```sql
|
|
select kilos, time as start, (case when lead(time) over (order by time asc) is null then 'infinity'::timestamptz else lead(time) over (order by time asc) end) as end from bodymass where account=1;
|
|
```
|
|
|
|
Thereby giving a table with clear timespans. Joining can then be performed by a nested table:
|
|
|
|
```
|
|
with bm_report as (
|
|
select kilos, time as start,
|
|
(case when lead(time) over (order by time asc) is null
|
|
then 'infinity'::timestamptz
|
|
else lead(time) over (order by time asc) end) as end from bodymass
|
|
where account=1)
|
|
select
|
|
t.time, t.exercise, t.kilos, b.kilos as bodymass, round(100*t.kilos/b.kilos, 1) as ratio
|
|
from training t
|
|
inner join bm_report b on t.time >= b.start and t.time < b.end
|
|
where t.account=1 and exercise=1
|
|
order by 1;
|
|
```
|
|
|
|
|