Consecutive sub-5 averages
3x3x3For 3x3x3 only: take a cuber's sequence of official-round averages in chronological order — what's the longest consecutive run where every single one is < 5.00 seconds? That's the metric. A streak breaks on any ≥ 5.00 average (or DNF).
Unlike Ao1000's "long-horizon mean", this is every-round-must-clear — one slip resets to zero. More of a sustained-pressure metric than a smoothing one. Two views: Ranking (each person's longest, top 100) + History (newest-first WR evolution).
By the numbers
Data source
Pull every 333 row, join persons + competitions + round_types; sort (person_id, start_date, round_type.rank) ascending to enforce per-person chronology and per-day round order.
Group in memory by person_id, scan per person maintaining a "current streak" object. average strictly < 500 and > 0 → bump count, update end-comp; otherwise commit if count > 1 and reset.
SELECT result.person_id, person_link, result.average,
competition.cell_name AS competition_name,
competition.id AS competition_id,
competition.start_date
FROM results result
JOIN persons person ON person.wca_id = result.person_id AND person.sub_id = 1
JOIN competitions competition ON competition.id = result.competition_id
JOIN round_types round_type ON round_type.id = result.round_type_id
WHERE result.event_id = '333'
ORDER BY result.person_id, competition.start_date, round_type.rank;Algorithm / pipeline
ORDER BY person_id, start_date, round_type.rank enforces strict per-person chronology; downstream scan needs no re-sorting.byPerson: Map<pid, rows> partitions in memory; release raw rows (paired with global.gc()) and process each cuber independently.avg > 0 && avg < 500 → count += 1, update endComp/endDate (and set startComp on count == 1); else if count > 1, commit the streak and reset. After the loop, commit the trailing run too.bestByPerson collapses one cuber's many streaks to their longest; sort descending by count, take top 100. Row = [count, person_link, startComp_link, endComp_link].(endDate, count); scan tracking maxCount, keep entries with count >= maxCount && count > 1 (note >= — ties allowed here); reverse for newest-first.Key formulae
Caveats & edges
- 3x3x3 only (
event_id = '333'); other events with sub-5 averages don't apply. - Threshold is strictly < 500 (i.e. < 5.00s) — a 5.00 flat counts as a break. DNFs break too.
- WR history uses
>=(ties allowed) — different from most other WR histories which use strict<. This is a quirk of this stat. - count == 1 isn't stored — a single isolated sub-5 average doesn't count as a streak; need ≥ 2 consecutive.