Moonboard Exploration

Hold Sets

When it comes to Moonboard training, climbers have several options to choose from. Moonboard hold sets can be purchased independently, allowing climbers to tailor their setups according to their needs and budget. However, to maximize training potential, the data clearly shows that some combinations of hold sets offer superior value, versatility, and challenge.

The pairing of Hold Set A and Hold Set B alone provides a strong foundation for a versatile climbing experience. With these two sets, climbers gain access to 30,161 routes, supported by 428 benchmarks across five versions of the Moonboard. At a total cost of £760, this combination offers a reasonable price of £0.03 per route, making it a popular choice among those looking to get the most out of their Moonboard without breaking the bank.

While the Hold Set A and Hold Set B combination is effective, adding the Original School Holds takes it to the next level. This trio unlocks an impressive 70,656 routes—more than double the number available with just Hold Set A and Hold Set B. The price per route drops significantly to £0.01, providing the best bang for the buck. With a total investment of £990 (for the holds), climbers benefit from the widest variety of routes, 805 benchmarks, and contributions from 384 benchmark setters, all across six different versions of the Moonboard. The sheer volume and diversity of climbing challenges make this combination unbeatable for those who want to push their limits.

Select Hold Sets

Breakdown

Breakdown by Version

Breakdown by Version & Grade

All hold sets

DuckDB Queries

    SELECT
        hold_sets,
        list_transform(hold_sets, x ->
                CASE
                    WHEN x = 'Original School Holds' THEN 230
                    WHEN x IN ('Hold Set A', 'Hold Set B') THEN 380
                    WHEN x = 'Hold Set C' THEN 430
                    WHEN x IN ('Wooden Holds', 'Wooden Holds B', 'Wooden Holds C') THEN 350
                END
        ) AS hold_price, -- Price in £ as at 20240816
        count(DISTINCT moonboard_version) AS versions,
        count(problem_id) AS routes,
        count(DISTINCT setter_id) AS setters,
        count(DISTINCT grade) AS grades,
        count(problem_id) FILTER (WHERE is_benchmark) AS benchmarks,
        count(DISTINCT setter_id) FILTER (WHERE is_benchmark) AS benchmark_setters,
        -- DuckDB friendly SQL, reusable column aliases
        list_aggregate(hold_price, 'sum')::int AS hold_sets_price,
        round(hold_sets_price / benchmarks, 2) AS benchmark_price,
        round(hold_sets_price / routes, 2) AS route_price,
        sum(repeats) AS total_climbs
    FROM moonboard
    GROUP BY 1,2
    ORDER BY benchmarks DESC