Back to WCA Statistics

Longest standing records

Longevity

For every regional record (AfR / AsR / ER / NAR / OcR / SAR / WR), measures how many days it stood until being broken. Active records use today as the upper bound.

Split across 7 regions (World + 6 continents), Top 10 each. WRs appear in every continent block — a WR is automatically that continent's continental record too.

By the numbers

7
Region blocks
World + 6 continents
10
Rows per region
Top 10 by days standing
OFFICIAL_EVENTS
Active events only
Discontinued excluded
today / 打破日
End boundary
Still active → today

Data source

Pulls all rows from results whose regional_single_record or regional_average_record is WR/AfR/AsR/ER/NAR/OcR/SAR; joins persons (sub_id = 1) + competitions + countries + continents for continent info. SQL only collects data — longevity is computed in JS transform().

In transform, group by (region, type, event), sort by date, find "next better result" date diff; no better → today minus current date (i.e. still active).

sql
SELECT regional_single_record, regional_average_record,
       best single, average,
       person.name, competition.start_date,
       event_id, continent.name continent
FROM results
JOIN persons ON persons.wca_id = person_id AND persons.sub_id = 1
JOIN competitions ON competitions.id = competition_id
JOIN countries ON countries.id = results.country_id
JOIN continents ON continents.id = countries.continent_id
WHERE regional_single_record IN ('AfR','AsR','ER','NAR','OcR','SAR','WR')
   OR regional_average_record IN ('AfR','AsR','ER','NAR','OcR','SAR','WR')

Algorithm / pipeline

1
Pull every record-flagged row
WHERE clause includes all 7 regional record codes; a single row can carry both single + average markers (handled as 2 entries).
2
Bucket by (region, event, type)
A regionRecords map: each region accepts which codes (e.g. Asia includes AsR + WR, since a WR set in Asia also counts as AsR).
3
Find next-better record
Sorted by date within group; for each row r, find(r2 => r2.value < r.value) returns the row that broke it; that row's start_date is the end boundary.
4
No-better → still active
Still-active records use today as the end boundary; UI typically annotates "still active".
5
Sort by days, Top 10
days = ⌊(end − start) / 1d⌋, sorted desc; emit only the Top 10 per region (with days bolded).

Caveats & edges

Related stats & links