Team Streak Stats Finder - Hockey

Find the best (or worst) streaks of games matching your criteria. • Sample SearchesData Coverage
Longest streak of consecutive games, from 1917-18 to 2024-25, in the regular season, requiring Wins = 1, sorted by most games matching criteria.
THIS QUESTION WAS ANSWERED USING
Stathead Hockey Logo POWERED BY Hockey Reference Logo
Your All Access Pass to the Hockey Database Go beyond the basics. Become a Stathead
Start Your FREE Trial
Display Query »
--------------------------------------

main

Page Setup Time: 0.00177 seconds

WITH
  Meta AS (
SELECT MAX(year_id) as MaxYear, team_id
FROM sup_team_seasons
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
WHERE type=? 
GROUP BY team_id 
  ),
  Gamelog AS (
SELECT year_id, team_id, (win=1) as met_criteria, LAG(win=1) OVER w AS lag_met_criteria, LEAD(win=1) OVER w AS lead_met_criteria, ROW_NUMBER() OVER w AS rn, date, team_game_num_franchise, phase_id
FROM sup_team_games as st
  JOIN sup_games USING (game_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
WHERE year_id<=?
  AND type=?
  AND year_id>=?
  AND comp_id=?
  AND forfeit IS NULL
  AND date<current_date() 
WINDOW w AS (PARTITION BY team_id ORDER BY date ) 
  ),
  StreakStart AS (
SELECT ROW_NUMBER() OVER w1 AS rownum, Gamelog.rn as rn_start, date AS streak_start_date, team_id
FROM Gamelog
WHERE met_criteria = 1
  AND (lag_met_criteria = 0 OR lag_met_criteria IS NULL) 
WINDOW w1 AS (PARTITION BY team_id ORDER BY date ) 
  ),
  StreakEnd AS (
SELECT ROW_NUMBER() OVER w2 AS rownum, Gamelog.rn as rn_end, date AS streak_end_date, IF(lead_met_criteria IS NULL AND year_id=MaxYear,1,0) AS active_streak, team_id
FROM Gamelog
  JOIN Meta USING (team_id)
WHERE met_criteria = 1
  AND (lead_met_criteria = 0 OR lead_met_criteria IS NULL) 
WINDOW w2 AS (PARTITION BY team_id ORDER BY date ) 
  ),
  streak_list AS (
SELECT team_id, streak_start_date, streak_end_date, (rn_end - rn_start)+1 as streak_length, active_streak
FROM StreakStart
  JOIN StreakEnd USING (team_id, rownum)
WHERE 1 
HAVING streak_length>=?
ORDER BY streak_length DESC, streak_end_date DESC LIMIT 0, 20
  )
SELECT ts.name_abbr as team_name_abbr, ts.link as team_link, team_id, streak_length, streak_start_date as streak_start_date_csk, streak_start_date as streak_start_date, streak_end_date as streak_end_date_csk, streak_end_date as streak_end_date, active_streak as active_streak_csk, IF(active_streak=1,'*','') as active_streak, 'Games List' as details_games, COUNT(*) AS games, SUM(win=1) AS wins, SUM(loss=1 AND (year_id<2000 OR type="post" OR overtimes=0)) AS losses, SUM(tie=1) AS ties, SUM(year_id>=2000 AND type="reg" AND loss=1 AND overtimes>0) AS losses_ot, SUM(goals) AS goals, SUM(goals_pp) AS goals_pp, SUM(goals_sh) AS goals_sh, SUM(shots) AS shots, SUM(pen_min) AS pen_min, SUM(goals_against) AS goals_against, SUM(goals_against_pp) AS goals_against_pp, SUM(goals_against_sh) AS goals_against_sh, SUM(shots_against) AS shots_against, SUM(opp_pen_min) AS opp_pen_min, SUM(chances_pp) AS chances_pp, SUM(opp_chances_pp) AS opp_chances_pp, SUM(goals) - SUM(goals_against) AS score_differential
FROM streak_list
  JOIN sup_team_games as st USING (team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN sup_comp_seasons USING (comp_id, year_id)
  JOIN (SELECT team_id, year_id, name_abbr, name, link FROM sup_team_seasons GROUP BY team_id, year_id ) as ts USING (team_id, year_id)
  JOIN sup_games USING (game_id)
WHERE type=?
  AND comp_id=?
  AND date>=streak_start_date
  AND date<=streak_end_date 
GROUP BY team_id, streak_start_date, streak_end_date
ORDER BY streak_length DESC, streak_end_date_csk DESC, team_id 

SQL PARAMS -- $VAR1 = [
          'reg',
          2025,
          'reg',
          1918,
          'NHL',
          2,
          'reg',
          'NHL'
        ];

Query Time: 2.07 seconds
Table Build Time: 0.04 seconds


--------------------------------------
SH->PARAM -- $VAR1 = {
          'year_max' => 2025,
          'streak_length' => 2,
          'team_game_min' => 1,
          'order_by' => 'streak_length',
          'match' => 'team_streak_game',
          'timeframe' => 'seasons',
          'team_game_max' => 84,
          'comp_type' => 'reg',
          'order_by_asc' => '0',
          'year_min' => 1918,
          'comp_id' => 'NHL'
        };
SH->PARAM_NO_DEFAULT -- $VAR1 = {
          'order_by' => 'streak_length',
          'order_by_asc' => '0',
          'year_min' => 1918,
          'comp_id' => 'NHL',
          'year_max' => 2025
        };

Search Criteria

Click on the red text to pre-fill the form with various values

Timeframe
Your search is currently looking for the individual games in the chosen span of days or seasons. You can also Switch to the search for totals from all games.
Your search is currently looking for the total of all games in the chosen span of days or seasons.
Game Type
Playoff Round
Team Won Series
Streak Options
Note: By NHL rule, for purposes of official NHL records, streaks are only counted if contained within a single season.
Span of Games
Team Game No.

Overall team game in season, or playoff season if "playoffs" is selected above.

Min  
Max  

Streak Stat Events (G, A, shots, etc.)

Wins

Team Filters (Won Cup, Made Playoffs, etc...)

Franchise
Team Won Stanley Cup
Team Made Playoffs

Game Filters (Opponent, Location, etc...)

Opponent
Game Result
Game Location
Game Month
Arena

You have edited your search criteria

or keep editing your search

clear changes

Fetching Results

Stathead spinner

Query Results

Subscribe to Stathead Hockey for full results.

Go inside the Hockey Reference database and access the sports search engine that was made for fans like you. Subscriptions start at just $9/month. Learn More.

Get your first month FREE

Already a paid subscriber? Log in for full results.

Data coverage: NHL all-time (since 1917-18) unless otherwise noted. Even Strength, Power Play, and Short-Handed Goals available since 1933-34. Plus/Minus and Shots available since 1959-60. Time on Ice available since 1998-99.

If you utilize material unique to a Sports Reference site for a tweet, an article, or for research for a broadcast or podcast, please strongly consider citing this site as the source for the material. It would be greatly appreciated and would help us continue to produce this material.