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.

Jump of the Year

An unofficial annual classification won by the athlete with the greatest combined jump distance across a calendar year.

Rules

  • Distances from all recorded jumps in individual World Cup competitions are summed for each athlete within a calendar year.
  • The athlete with the highest cumulative distance wins the classification.
  • The final presentation excludes 2017 and 2026 because the dataset does not cover either of those calendar years in full.

About the classification

Sports journalist Tomasz Zimoch introduced the unofficial classification in 2002. The award is sponsored by Scandinavian Airlines (SAS), which converts the winning distance into air miles and awards a flight ticket to a corresponding destination. The ticket remains valid until the end of the following calendar year.

This project recreates the classification directly from the recorded jump distances.

Calculating the winners

The jump_of_the_year view first totals every athlete’s distance by year, then keeps the athlete or athletes matching the greatest annual distance.

create view jump_of_the_year
as
with yearly_distances as (
	select 
		extract(year from c.competition_started) as year, 
		r.jumper_id, 
		sum(r.distance) as yearly_distance
	from results r
	join competitions c using (race_id)
	group by year, r.jumper_id
),
max_distances as (
	select year, max(yearly_distance) as distance
	from yearly_distances
	group by year
)
select y.year, y.jumper_id, y.yearly_distance
from max_distances m
join yearly_distances y 
	on m.year = y.year and m.distance = y.yearly_distance
order by year

View presentation

Raw jump_of_the_year view returned by PostgreSQL0 rows

Winners

The complete years available in the dataset can be presented together with each winner’s country and total distance.

select
	joty.year,
	concat_ws(' || ', j.jumper_country, j.jumper_name) as jumper,
	joty.yearly_distance as total_meters 
from jump_of_the_year joty
join jumpers j using (jumper_id)
where joty.year > 2017 and joty.year < 2026
order by joty.year;

Results

Jump of the Year winners returned by PostgreSQL0 rows