Back to feed

Project docs

Ski Jumping Statistics

PostgreSQL analysis of men's Ski Jumping World Cup results, supported by a Python data collection pipeline.

Most Competitive Events

The World Cup competitions where the leading athletes were separated by the smallest differences in total points.

Rules

  • Only the top 12 finishers from each competition are compared.
  • Competitiveness is measured using the standard deviation of their final points.
  • A lower standard deviation represents a more closely contested competition.

The top 12 reflects a spectator’s perspective, as attention is usually focused on the leading group rather than every participant. Final points and positions come from the competition_results materialized view.

Ranking the events

with fiercest_competitions as (
	select
		cr.race_id,
		stddev(total_points) as stddev,
		min(total_points) as lowest_score,
		max(total_points) as highest_score
	from competition_results cr
	where pos < 13
	group by cr.race_id
	order by stddev
	limit 15
)
select
	to_char(c.competition_started, 'Mon MM YYYY') as date,
	c.hill_city || ' HS' || c.hill_size as hill,
	fc.lowest_score::decimal(10,2),
	fc.highest_score::decimal(10,2),
	fc.stddev::decimal(10,2) as standard_deviation
from fiercest_competitions fc
join competitions c using (race_id)
order by standard_deviation;

Results

Most competitive events returned by PostgreSQL0 rows

The closest competition

The leading group from the most competitive event identified in the dataset can be retrieved with find_race_id:

select
	cr.pos,
	j.jumper_name || ' (' || j.jumper_country || ')' as jumper,
	cr.total_points::decimal(10, 2)
from competition_results cr
join jumpers j using (jumper_id)
where race_id = find_race_id(2021, 'Klingenthal', 3)
limit 12;

Results

Top 12 from the closest competition returned by PostgreSQL0 rows