Player Streak Stats Finder - Pro Basketball

Find the best (or worst) streaks of games matching your criteria. • Sample SearchesData Coverage
Longest streak of consecutive games, in 2025-26, in the NBA/BAA, in the regular season, requiring Points >= 30, sorted by most games matching criteria.
THIS QUESTION WAS ANSWERED USING
Stathead Basketball Logo POWERED BY Pro Basketball Reference Logo
Your All Access Pass to the Pro Basketball Database Go beyond the basics. Become a Stathead
Start Your FREE Trial
Display Query »
--------------------------------------

main

Page Setup Time: 0.00280 seconds

WITH
  Meta AS (
SELECT MAX(year_id) as MaxYear, person_id
FROM sup_player_team_seasons
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
WHERE type=? 
GROUP BY person_id 
  ),
  Gamelog AS (
SELECT person_id, year_id, team_id, (pts>=30) as met_criteria, LAG(pts>=30) OVER w AS lag_met_criteria, LEAD(pts>=30) OVER w AS lead_met_criteria, ROW_NUMBER() OVER w AS rn, date, player_game_num_career, phase_id
FROM sup_player_games
  JOIN sup_games USING (game_id)
  JOIN (SELECT game_id, year_id, comp_id, phase_id, team_id, opp_team_id, opp_comp_id, opp_phase_id, team_game_num_season, team_game_num_franchise, home_away_neutral, win, loss, tie FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
WHERE comp_id IN('NBA','BAA')
  AND year_id<=?
  AND type=?
  AND year_id>=?
  AND (forfeit IS NULL OR (forfeit != 'V' AND forfeit != 'H')) 
WINDOW w AS (PARTITION BY person_id ORDER BY date ) 
  ),
  StreakStart AS (
SELECT ROW_NUMBER() OVER w1 AS rownum, Gamelog.rn as rn_start, date AS streak_start_date, person_id, player_game_num_career AS gn_start
FROM Gamelog
WHERE met_criteria = 1
  AND (lag_met_criteria = 0 OR lag_met_criteria IS NULL) 
WINDOW w1 AS (PARTITION BY person_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, person_id, player_game_num_career AS gn_end
FROM Gamelog
  JOIN Meta USING (person_id)
WHERE met_criteria = 1
  AND (lead_met_criteria = 0 OR lead_met_criteria IS NULL) 
WINDOW w2 AS (PARTITION BY person_id ORDER BY date ) 
  ),
  streak_list AS (
SELECT person_id, streak_start_date, streak_end_date, (rn_end - rn_start)+1 as streak_length, active_streak
FROM StreakStart
  JOIN StreakEnd USING (person_id, rownum)
WHERE 1 
HAVING streak_length>=?
ORDER BY streak_length DESC, streak_end_date DESC LIMIT 0, 20
  )
SELECT name_display, name_display_csk, sup_players.link as name_display_link, IF(MIN(age_in_season)=MAX(age_in_season), MIN(age_in_season), CONCAT(MIN(age_in_season), '-', MAX(age_in_season))) as age_range, person_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, GROUP_CONCAT(DISTINCT UPPER(ts.name_abbr)) as teams_played_for_career, 'Games List' as details_games, COUNT(*) AS games, SUM(is_starter) as is_starter_csk, SUM(is_starter IS NULL) as is_starter_incomplete, SUM(is_starter) AS is_starter, SUM(mp IS NULL) as mp_incomplete, SUM(mp) AS mp, SUM(fg IS NULL) as fg_incomplete, SUM(fg) AS fg, SUM(fga IS NULL) as fga_incomplete, SUM(fga) AS fga, IF(SUM(fga), SUM((fga IS NOT NULL) * fg) / SUM(fga), NULL) as fg_pct_csk, SUM(fga IS NULL)+SUM(fg IS NULL) as fg_pct_incomplete, TRIM(LEADING '0' FROM ROUND(IF(SUM(fga), SUM((fga IS NOT NULL) * fg) / SUM(fga), NULL),3)) AS fg_pct, NULL as fg2_incomplete, SUM(fg - IFNULL(fg3, 0)) AS fg2, NULL as fg2a_incomplete, SUM(fga - IFNULL(fg3a, 0)) AS fg2a, IF(SUM(fga - IFNULL(fg3a, 0)), SUM(((fga - IFNULL(fg3a, 0)) IS NOT NULL) * (fg - IFNULL(fg3, 0))) / SUM(fga - IFNULL(fg3a, 0)), NULL) as fg2_pct_csk, NULL as fg2_pct_incomplete, TRIM(LEADING '0' FROM ROUND(IF(SUM(fga - IFNULL(fg3a, 0)), SUM(((fga - IFNULL(fg3a, 0)) IS NOT NULL) * (fg - IFNULL(fg3, 0))) / SUM(fga - IFNULL(fg3a, 0)), NULL),3)) AS fg2_pct, NULL as fg3_incomplete, SUM(fg3) AS fg3, NULL as fg3a_incomplete, SUM(fg3a) AS fg3a, IF(SUM(fg3a), SUM((fg3a IS NOT NULL) * fg3) / SUM(fg3a), NULL) as fg3_pct_csk, NULL as fg3_pct_incomplete, TRIM(LEADING '0' FROM ROUND(IF(SUM(fg3a), SUM((fg3a IS NOT NULL) * fg3) / SUM(fg3a), NULL),3)) AS fg3_pct, SUM(ft IS NULL) as ft_incomplete, SUM(ft) AS ft, SUM(fta IS NULL) as fta_incomplete, SUM(fta) AS fta, IF(SUM(fta), SUM(ft) / SUM(fta), NULL) as ft_pct_csk, SUM(fta IS NULL)+SUM(ft IS NULL) as ft_pct_incomplete, TRIM(LEADING '0' FROM ROUND(IF(SUM(fta), SUM(ft) / SUM(fta), NULL),3)) AS ft_pct, IF(SUM(fga + fta), SUM((fga IS NOT NULL AND fta IS NOT NULL) * pts) / SUM(2 * (fga + (0.44 * fta))), NULL) as ts_pct_csk, SUM(fga IS NULL)+SUM(pts IS NULL)+SUM(fta IS NULL) as ts_pct_incomplete, TRIM(LEADING '0' FROM ROUND(IF(SUM(fga + fta), SUM((fga IS NOT NULL AND fta IS NOT NULL) * pts) / SUM(2 * (fga + (0.44 * fta))), NULL),3)) AS ts_pct, SUM(orb IS NULL) as orb_incomplete, SUM(orb) AS orb, SUM(orb IS NULL)+SUM(trb IS NULL) as drb_incomplete, SUM(trb - orb) AS drb, SUM(trb IS NULL) as trb_incomplete, SUM(trb) AS trb, SUM(ast IS NULL) as ast_incomplete, SUM(ast) AS ast, SUM(stl IS NULL) as stl_incomplete, SUM(stl) AS stl, SUM(blk IS NULL) as blk_incomplete, SUM(blk) AS blk, SUM(((pts>=10)+(trb IS NOT NULL AND trb>=10)+(blk IS NOT NULL AND blk>=10)+(stl IS NOT NULL AND stl>=10)+(ast IS NOT NULL AND ast>=10))>=3) AS tpl_dbl, SUM(((pts>=10)+(trb IS NOT NULL AND trb>=10)+(blk IS NOT NULL AND blk>=10)+(stl IS NOT NULL AND stl>=10)+(ast IS NOT NULL AND ast>=10))>=2) AS dbl_dbl, SUM(tov IS NULL) as tov_incomplete, SUM(tov) AS tov, SUM(pf IS NULL) as pf_incomplete, SUM(pf) AS pf, SUM(pts IS NULL) as pts_incomplete, SUM(pts) AS pts, SUM(pts + 0.4 * fg - 0.7 * fga - 0.4 * (fta - ft) + 0.7 * orb + 0.3 * (trb - orb) + stl + 0.7 * ast + 0.7 * blk - 0.4 * pf - tov) / COUNT(*) as game_score_csk, SUM(ast IS NULL)+SUM(pf IS NULL)+SUM(ft IS NULL)+SUM(blk IS NULL)+SUM(orb IS NULL)+SUM(fga IS NULL)+SUM(tov IS NULL)+SUM(fta IS NULL)+SUM(stl IS NULL)+SUM(fg IS NULL)+SUM(trb IS NULL)+SUM(pts IS NULL) as game_score_incomplete, ROUND(SUM(pts + 0.4 * fg - 0.7 * fga - 0.4 * (fta - ft) + 0.7 * orb + 0.3 * (trb - orb) + stl + 0.7 * ast + 0.7 * blk - 0.4 * pf - tov) / COUNT(*),1) AS game_score, SUM(plus_minus IS NULL) as plus_minus_incomplete, SUM(plus_minus) AS plus_minus, SUM(bpm * time_on_court) / SUM(time_on_court) as bpm_csk, SUM(bpm IS NULL)+SUM(time_on_court IS NULL) as bpm_incomplete, ROUND(SUM(bpm * time_on_court) / SUM(time_on_court),1) AS bpm
FROM streak_list
  JOIN sup_player_games as st USING (person_id)
  JOIN sup_games USING (game_id)
  JOIN sup_people USING (person_id)
  JOIN sup_players USING (person_id)
  JOIN (SELECT game_id, year_id, comp_id, phase_id, team_id, opp_team_id, opp_comp_id, opp_phase_id, team_game_num_season, home_away_neutral, win, loss, tie FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN (SELECT person_id, year_id, age as age_in_season FROM sup_player_team_seasons GROUP BY person_id, year_id ) as ps2 USING (person_id, year_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)
WHERE comp_id IN('NBA','BAA')
  AND type=?
  AND date>=streak_start_date
  AND date<=streak_end_date 
GROUP BY person_id, streak_start_date, streak_end_date
ORDER BY streak_length DESC, streak_end_date_csk DESC, person_id 

SQL PARAMS -- $VAR1 = [
          'reg',
          2026,
          'reg',
          2026,
          2,
          'reg'
        ];

Query Time: 0.30 seconds
Table Build Time: 0.06 seconds


--------------------------------------
SH->PARAM -- $VAR1 = {
          'season_start' => 1,
          'match' => 'player_streak_game',
          'comp_id' => 'NBA',
          'timeframe' => 'seasons',
          'team_game_max' => 99,
          'year_max' => 2026,
          'streak_length' => 2,
          'team_game_min' => 1,
          'season_end' => -1,
          'order_by' => 'streak_length',
          'order_by_asc' => '0',
          'comp_type' => 'reg',
          'year_min' => 2026
        };
SH->PARAM_NO_DEFAULT -- $VAR1 = {
          'order_by' => 'streak_length',
          'order_by_asc' => '0',
          'year_max' => 2026,
          'year_min' => 2026,
          'comp_id' => 'NBA'
        };

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
Streak Options
League
Span of Games
Team Game No.

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

Min  
Max  

Streak Stat Events (pts., rebs., assists, etc...)

Points

Player Filters (team, age, position, etc...)

Team
Age (as of day of game)

Days are optional. Leaving days blank will include entire year.

and
  days
to
and
  days
Year (of player's career)
to
Position
On the Player's Birthday
Started Game
Active
Hall of Fame

Game Filters (Game location, playoff details, etc...)

Opponents
Game Result
Game Location
Game Month
Game Day of Month
Game Day of Week
Overtime

You have edited your search criteria

or keep editing your search

clear changes

Fetching Results

Stathead spinner

Query Results

Subscribe to Stathead Pro Basketball for full results.

Go inside the Pro Basketball 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: since 1946-47 unless otherwise noted. Regular season: PTS, FG, FT, 3P complete all-time. FTA complete back to 1948-49. FGA, TRB, AST, PF, GS over 99% complete back to 1975-76. MP over 99% complete back to 1976-77. +/- complete back to 1996-97. All other box score stats (3PA, ORB, DRB, STL, BLK, TOV) complete back to 1983-84. Playoffs: PTS, FG, FT, FTA, 3P, 3PA complete all-time. PF complete back to 1948-49. FGA, TRB, AST complete back to 1962-63. GS complete back to 1973-74. MP complete back to 1974-75. +/- complete back to 1996-97. STL, BLK, TOV complete back to 1982-83. ORB, DRB complete back to 1983-84. BPM not available for WNBA & ABA. Please see our data coverage page for details.

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.