DNF rate by event
EventFor each event, DNF count ÷ actual attempts. Attempts excludes two flavors of non-solve: value = 0 (placeholder for not-submitted) and value = -2 (DNS — no-show).
BLD / FMC / MBLD sit well above 3x3: blindfolded depends on full memorization, FMC has a 1-hour cap with move limits, MBLD DNFs the whole attempt if any cube fails.
By the numbers
value=-1
DNF encoding
In result_attempts.value
value=-2
DNS encoding
Excluded from denominator
value=0
Empty slot
5-attempts round not filled
%
Display
2-decimal percentage
Data source
JOIN results to result_attempts (one row = one solve attempt — the fine-grained WCA dump table). Group by event_id, SUM the DNFs (value = -1) and attempts (value NOT IN (-2, 0)); TS side then computes the ratio and sorts DESC.
sql
SELECT r.event_id, SUM(CASE WHEN ra.value = -1 THEN 1 ELSE 0 END) dnfs, SUM(CASE WHEN ra.value NOT IN (-2, 0) THEN 1 ELSE 0 END) attempts FROM results r JOIN result_attempts ra ON ra.result_id = r.id GROUP BY r.event_id;
Algorithm / pipeline
1
Expand to per-attempt rows
results is one row per round (with best/average); the individual 5 attempts live in result_attempts. JOIN multiplies row count by ~5.2
Recognize three value types
value > 0 real result (centisecond / move / FMC encoding); = -1 DNF; = -2 DNS (no-show); = 0 empty slot when a 5-attempt round wasn't fully filled.3
SUM out two numbers
SUM(CASE WHEN value = -1 THEN 1 ELSE 0 END) = DNF count; SUM(CASE WHEN value NOT IN (-2, 0) THEN 1 ELSE 0 END) = real attempts (including DNFs).4
Group by event
GROUP BY r.event_id — one row per WCA event.5
Compute and sort in TS
TS computes
100 * dnfs / attempts, formats as toFixed(2) + " %", sorts DESC by rate, and maps event_id through EVENTS[id] for display.Key formulae
DNF rate
dnf_rate = dnf_count / attempted
dnf_count = COUNT(value = -1); attempted = COUNT(value ≠ -2 and ≠ 0) — excludes DNS and empty slots. Multiplied by 100 with % for display.Caveats & edges
- Denominator excludes DNS (
-2) and empty slots (0) — those are not real "attempts". Changing the denominator would shift every event down. - A round can hold up to 5 attempts but many events use only 1-3 (BLD / FMC etc.). Aggregation is per-attempt, not per-round.
- MBLD attempts are compound (one bundle of cubes) — DNF is judged at the bundle level. The rate is not "per-cube DNF rate".