Change Log for Britains Hardest Boulders Through Time

Overview

Total Changes

14

First Change

30th Dec 2024

Last Change

31st Dec 2024

Log

Date Time User Type Name Attribute
1 31st December 2024 07:59:20 remus - - hidden
Before
false
After
true
2 31st December 2024 07:59:20 remus - - public
Before
false
After
true
3 31st December 2024 07:57:43 remus - - list_definition
Before
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Boulder problem' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
After
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on ,count(*) from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null and cl.country_id = 1 inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Boulder problem' and ast.ascent_successful = true and a.ascent_type_id = 2 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null and cl.country_id = 1 inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 2 and a.ascent_style_id = 1 ), dts as ( select 1948 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
Diff
--- before +++ after @@ -3,6 +3,7 @@ date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on + ,count(*) from ascents a @@ -16,6 +17,7 @@ on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null + and cl.country_id = 1 inner join grades g on c.grade_id = g.grade_id inner join climb_types ct @@ -26,7 +28,7 @@ where ct.climb_type = 'Boulder problem' and ast.ascent_successful = true - and a.ascent_type_id = 1 + and a.ascent_type_id = 2 group by date_part('year', a.ascent_dt_start) @@ -61,6 +63,7 @@ on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null + and cl.country_id = 1 inner join grades g on c.grade_id = g.grade_id inner join best_up_to but @@ -69,11 +72,11 @@ and g.order_on = but.best where - a.ascent_type_id = 1 + a.ascent_type_id = 2 and a.ascent_style_id = 1 ), dts as ( select - 1970 as yr + 1948 as yr union all
4 30th December 2024 18:50:30 Mattsparksy - - list_definition
Before
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Boulder' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
After
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Boulder problem' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
Diff
--- before +++ after @@ -24,7 +24,7 @@ on a.ascent_style_id = ast.ascent_style_id where - ct.climb_type = 'Boulder' + ct.climb_type = 'Boulder problem' and ast.ascent_successful = true and a.ascent_type_id = 1
5 30th December 2024 18:46:33 Mattsparksy - - list_definition
Before
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Sport route' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
After
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Boulder' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
Diff
--- before +++ after @@ -24,7 +24,7 @@ on a.ascent_style_id = ast.ascent_style_id where - ct.climb_type = 'Sport route' + ct.climb_type = 'Boulder' and ast.ascent_successful = true and a.ascent_type_id = 1
6 30th December 2024 18:45:57 Mattsparksy - - hidden
Before
true
After
false
7 30th December 2024 18:45:04 Mattsparksy - - list_type_id
Before
None
After
1
8 30th December 2024 18:45:04 Mattsparksy - - hidden
Before
false
After
true
9 30th December 2024 18:45:04 Mattsparksy - - public
Before
true
After
false
10 30th December 2024 18:45:04 Mattsparksy - - list_description_pretty
Before
None
After
<p>Britains hardest boulders through time.</p>
11 30th December 2024 18:45:04 Mattsparksy - - list_definition
Before
None
After
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Sport route' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
Diff
--- before +++ after @@ -1 +1,107 @@ - +with recursive per_year as ( + select + date_part('year', a.ascent_dt_start) as yr + ,ast.ascent_style_id + ,max(g.order_on) as max_grade_order_on + + from + ascents a + inner join climbs c + on a.climb_id = c.climb_id + and a.deleted_on is null + and c.deleted_on is null + and a.exclude_reason is null + and c.exclude_reason is null + inner join climbers cl + on a.climber_id = cl.climber_id + and cl.deleted_on is null + and cl.exclude_reason is null + inner join grades g + on c.grade_id = g.grade_id + inner join climb_types ct + on c.climb_type = ct.climb_type_id + inner join ascent_styles ast + on a.ascent_style_id = ast.ascent_style_id + + where + ct.climb_type = 'Sport route' + and ast.ascent_successful = true + and a.ascent_type_id = 1 + + group by + date_part('year', a.ascent_dt_start) + ,ast.ascent_style_id + ,ast.ascent_style +), best_up_to as ( + select + yr + ,ascent_style_id + ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best + + from + per_year +), candidates as ( + select + c.climb_name + ,c.climb_id + ,g.grade + ,cl.climber_name + ,cl.climber_id + ,a.ascent_dt_start + ,a.ascent_dt_end + + from + ascents a + inner join climbs c + on a.climb_id = c.climb_id + and a.deleted_on is null + and c.deleted_on is null + and a.exclude_reason is null + inner join climbers cl + on a.climber_id = cl.climber_id + and cl.deleted_on is null + and cl.exclude_reason is null + inner join grades g + on c.grade_id = g.grade_id + inner join best_up_to but + on a.ascent_style_id = but.ascent_style_id + and date_part('year', a.ascent_dt_start) = but.yr + and g.order_on = but.best + + where + a.ascent_type_id = 1 + and a.ascent_style_id = 1 +), dts as ( + select + 1970 as yr + + union all + + select + yr + 1 + + from + dts + + where + yr <= (select max(date_part('year', ascent_dt_start)) from candidates) +) + +select + dts.yr as Year + ,c.grade as Grade + ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers + + +from + dts + left join candidates c + on dts.yr = date_part('year', c.ascent_dt_start) + +group by + dts.yr + ,c.grade + +order by + dts.yr +
12 30th December 2024 18:45:04 Mattsparksy - - list_description
Before
None
After
Britains hardest boulders through time.
Diff
--- before +++ after @@ -1 +1 @@ - +Britains hardest boulders through time.
13 30th December 2024 18:45:04 Mattsparksy - - list_name
Before
None
After
Britains Hardest Boulders Through Time
14 30th December 2024 18:45:04 Mattsparksy - - list_type_name
Before
None
After
Bouldering

Page 1