m@rc-lenzin

Wenn etwas schief geht, dann freu dich. Das sind die Geschichten die dir in Erinnerung bleiben werden

Kungsleden per SQL

Es geht noch lange, viel zu lange, 133 Tage bis ich starten darf. Damit ich mich auch jetzt bereits etwas mit dem Trail befassen kann, habe ich mit SQL die Strecke aufgelistet.

Berechnet wird hier,  an welchem Tag, Datum ich mit welcher Tagesleistung wo bin. Also Spalte 1&2 (Tag & Datum) und die restlichen Spalten (z.b. „d20“) wenn ich täglich 20 km laufe.

with x(l,n,t,d,x) 
as (select  level-1,
            null,440,
            to_date('04.08.2017','dd.mm.yyyy'),
            'yyyy-mm-dd, Dy'
      from  dual 
    connect by level <= 25)
select  l,
        to_char(d+l,x) d,
        case when ( l * 20 ) <= t + ( 20 - 1 ) then ( l * 20 ) else n end d20,
        case when ( l * 21 ) <= t + ( 21 - 1 ) then ( l * 21 ) else n end d21,
        case when ( l * 22 ) <= t + ( 22 - 1 ) then ( l * 22 ) else n end d22,
        case when ( l * 23 ) <= t + ( 23 - 1 ) then ( l * 23 ) else n end d23,
        case when ( l * 24 ) <= t + ( 24 - 1 ) then ( l * 24 ) else n end d24,
        case when ( l * 25 ) <= t + ( 25 - 1 ) then ( l * 25 ) else n end d25,
        case when ( l * 26 ) <= t + ( 26 - 1 ) then ( l * 26 ) else n end d26,
        case when ( l * 27 ) <= t + ( 27 - 1 ) then ( l * 27 ) else n end d27,
        case when ( l * 28 ) <= t + ( 28 - 1 ) then ( l * 28 ) else n end d28,
        case when ( l * 29 ) <= t + ( 29 - 1 ) then ( l * 29 ) else n end d29,
        case when ( l * 30 ) <= t + ( 30 - 1 ) then ( l * 30 ) else n end d30,
        case when ( l * 31 ) <= t + ( 31 - 1 ) then ( l * 31 ) else n end d31,
        case when ( l * 32 ) <= t + ( 32 - 1 ) then ( l * 32 ) else n end d32,
        case when ( l * 33 ) <= t + ( 33 - 1 ) then ( l * 33 ) else n end d33,
        case when ( l * 34 ) <= t + ( 34 - 1 ) then ( l * 34 ) else n end d34,
        case when ( l * 35 ) <= t + ( 35 - 1 ) then ( l * 35 ) else n end d35,
        case when ( l * 36 ) <= t + ( 36 - 1 ) then ( l * 36 ) else n end d36,
        case when ( l * 37 ) <= t + ( 37 - 1 ) then ( l * 37 ) else n end d37,
        case when ( l * 38 ) <= t + ( 38 - 1 ) then ( l * 38 ) else n end d38,
        case when ( l * 39 ) <= t + ( 39 - 1 ) then ( l * 39 ) else n end d39,
        case when ( l * 40 ) <= t + ( 40 - 1 ) then ( l * 40 ) else n end d40
  from  x;

Das Resultat sieht dann etwa so aus:

Wenn ich nun meine Etapen etwas genauer anschaue (sind nur provisorische Etapen),  ergibt sich folgendes Skript:

with x(d,dist,up,down)
as (select 1,   14.3,   271,    172     from dual union all
    select 2,   15.1,   562,    265     from dual union all
    select 3,   19.9,   574,    339     from dual union all
    select 4,   20.53,  446,    749     from dual union all
    select 5,   17.9,   352,    511     from dual union all
    select 6,   24.5,   955,    1114    from dual union all
    select 7,   22.4,   728,    528     from dual union all
    select 8,   12.4,   442,    517     from dual union all
    select 9,   24.5,   669,    739     from dual union all
    select 10,  16.3,   356,    528     from dual union all
    select 11,  19.2,   754,    346     from dual union all
    select 12,  20.4,   516,    795     from dual union all
    select 13,  15.3,   634,    132     from dual union all
    select 14,  14.2,   33,     449     from dual union all
    select 15,  24.6,   347,    435     from dual union all
    select 16,  20.7,   543,    479     from dual union all
    select 17,  22.2,   423,    155     from dual union all
    select 18,  27.4,   402,    658     from dual union all
    select 19,  19.5,   35,     134     from dual union all
    select 20,  7.7,    387,    33      from dual union all
    select 21,  19.2,   497,    551     from dual union all
    select 22,  27.7,   504,    500     from dual union all
    select 23,  23.5,   426,    647     from dual)
select  sum(dist)               tot_dist,
        sum(up)                 tot_up,
        sum(down)               tot_down,
        ceil(sum(dist)/4)       hh_flat,
        ceil(sum(up)/300)       hh_up,
        ceil(sum(down)/500)     hh_down,
        ceil(sum(dist)/4)+ceil(sum(up)/300)+ceil(sum(down)/500) hh_total,
        round((ceil(sum(dist)/4)+ceil(sum(up)/300)+ceil(sum(down)/500))/19,2) hh_total_p_day
  from  x

Das Resultat hier wäre:

TOT_DIST: 449.43
TOT_UP: 10856
TOT_DOWN: 10776
HH_FLAT: 113
HH_UP: 37
HH_DOWN: 22
HH_TOTAL: 172
HH_TOTAL_P_DAY: 9.05

Die letzte Berechnung berechnet die Laufzeit die ich haben sollte (wir aber ganz sicher anders sein). Für 4 km habe ich 1 Stunde, 300m aufwärts benötigen auch eine Stunde, gleich wie 500m hinuter zu wandern. Die Pausen, Wetter, ect. sind dabei nicht eingerechnet.

Weiter Beitrag

Zurück Beitrag

© 2025 m@rc-lenzin

Thema von Anders Norén