Longest No-Win Streaks After HT Lead
For each team, the longest consecutive run of league matches where they led at half-time but still failed to win
Consecutive Matches
Bars are to scale · longest streak at top · hover for dates and opponents
Every Team's Longest Streak
| # | Team | Matches | Season(s) | First match | Last match | Opponents |
|---|---|---|---|---|---|---|
| 1 | Crystal Palace | 3 | 2018-19 | 12 Jan 2019 | 30 Jan 2019 | Watford, Liverpool, Southampton |
| 2 | Manchester City | 3 | 1992-93 | 09 Apr 1993 | 18 Apr 1993 | Sheffield United, Liverpool, Aston Villa |
| 3 | Newcastle United | 3 | 1999-00 | 15 Aug 1999 | 25 Aug 1999 | Southampton, Wimbledon, Sunderland |
| 4 | Sheffield Wednesday | 3 | 1995-96 | 18 Nov 1995 | 25 Nov 1995 | Manchester City, Arsenal, Everton |
| 5 | Sunderland | 3 | 2012-13 | 01 Sep 2012 | 22 Sep 2012 | Swansea City, Liverpool, West Ham United |
| 6 | Wolverhampton Wanderers | 3 | 2010-11 | 28 Aug 2010 | 18 Sep 2010 | Newcastle United, Fulham, Tottenham Hotspur |
| 7 | Arsenal | 2 | 2019-20 | 27 Oct 2019 | 02 Nov 2019 | Crystal Palace, Wolverhampton Wanderers |
| 8 | Aston Villa | 2 | 2000-01 | 25 Nov 2000 | 02 Dec 2000 | Coventry City, Newcastle United |
| 9 | Birmingham City | 2 | 2004-05 | 21 Nov 2004 | 27 Nov 2004 | Blackburn Rovers, Norwich City |
| 10 | Blackburn Rovers | 2 | 1994-95 | 15 Apr 1995 | 17 Apr 1995 | Leeds United, Manchester City |
| 11 | Bolton Wanderers | 2 | 2009-10 | 26 Dec 2009 | 29 Dec 2009 | Burnley, Hull City |
| 12 | Bournemouth | 2 | 2022-23 | 29 Oct 2022 | 05 Nov 2022 | Tottenham Hotspur, Leeds United |
| 13 | Brentford | 2 | 2024-25 | 18 May 2025 | 25 May 2025 | Fulham, Wolverhampton Wanderers |
| 14 | Brighton and Hove Albion | 2 | 2024-25 | 26 Oct 2024 | 02 Nov 2024 | Wolverhampton Wanderers, Liverpool |
| 15 | Burnley | 2 | 2009-10 | 07 Nov 2009 | 21 Nov 2009 | Manchester City, Aston Villa |
| 16 | Charlton Athletic | 2 | 2002-03 | 21 Dec 2002 | 26 Dec 2002 | Birmingham City, Tottenham Hotspur |
| 17 | Chelsea | 2 | 1994-95 | 01 Apr 1995 | 10 Apr 1995 | Newcastle United, Wimbledon |
| 18 | Coventry City | 2 | 1997-98 | 23 Aug 1997 | 27 Aug 1997 | Bolton Wanderers, West Ham United |
| 19 | Derby County | 2 | 2001-02 | 20 Oct 2001 | 28 Oct 2001 | Charlton Athletic, Chelsea |
| 20 | Everton | 2 | 1993-94 | 03 Oct 1993 | 16 Oct 1993 | Tottenham Hotspur, Swindon Town |
| 21 | Fulham | 2 | 2007-08 | 18 Aug 2007 | 25 Aug 2007 | Middlesbrough, Aston Villa |
| 22 | Ipswich Town | 2 | 1992-93 | 03 Apr 1993 | 06 Apr 1993 | Manchester City, Chelsea |
| 23 | Leicester City | 2 | 1994-95 | 26 Nov 1994 | 03 Dec 1994 | Norwich City, Aston Villa |
| 24 | Liverpool | 2 | 1994-95 | 26 Nov 1994 | 03 Dec 1994 | Tottenham Hotspur, Coventry City |
| 25 | Manchester United | 2 | 1998-99 | 12 Dec 1998 | 16 Dec 1998 | Tottenham Hotspur, Chelsea |
| 26 | Middlesbrough | 2 | 1998-99 | 24 Oct 1998 | 01 Nov 1998 | Wimbledon, Nottingham Forest |
| 27 | Norwich City | 2 | 2019-20 | 28 Dec 2019 | 01 Jan 2020 | Tottenham Hotspur, Crystal Palace |
| 28 | Nottingham Forest | 2 | 2022-23 | 03 Sep 2022 | 16 Sep 2022 | Bournemouth, Fulham |
| 29 | Queens Park Rangers | 2 | 1993-94 | 27 Nov 1993 | 04 Dec 1993 | Tottenham Hotspur, Aston Villa |
| 30 | Reading | 2 | 2012-13 | 27 Oct 2012 | 04 Nov 2012 | Fulham, Queens Park Rangers |
| 31 | Sheffield United | 2 | 2019-20 | 24 Nov 2019 | 01 Dec 2019 | Manchester United, Wolverhampton Wanderers |
| 32 | Southampton | 2 | 1992-93 | 12 Sep 1992 | 19 Sep 1992 | Queens Park Rangers, Leeds United |
| 33 | Stoke City | 2 | 2009-10 | 31 Oct 2009 | 08 Nov 2009 | Wolverhampton Wanderers, Hull City |
| 34 | Swansea City | 2 | 2013-14 | 02 Mar 2014 | 15 Mar 2014 | Crystal Palace, West Bromwich Albion |
| 35 | Tottenham Hotspur | 2 | 1994-95 | 03 May 1995 | 06 May 1995 | Newcastle United, Queens Park Rangers |
| 36 | West Bromwich Albion | 2 | 2002-03 | 21 Dec 2002 | 26 Dec 2002 | Sunderland, Arsenal |
| 37 | West Ham United | 2 | 1994-95 → 1995-96 | 14 May 1995 | 19 Aug 1995 | Manchester United, Leeds United |
| 38 | Wigan Athletic | 2 | 2009-10 | 06 Feb 2010 | 09 Feb 2010 | Sunderland, Stoke City |
| 39 | Wimbledon | 2 | 1996-97 | 18 Mar 1997 | 23 Mar 1997 | West Ham United, Newcastle United |
| 40 | Barnsley | 1 | 1997-98 | 09 Aug 1997 | 09 Aug 1997 | West Ham United |
| 41 | Blackpool | 1 | 2010-11 | 27 Nov 2010 | 27 Nov 2010 | Bolton Wanderers |
| 42 | Bradford City | 1 | 1999-00 | 08 Jan 2000 | 08 Jan 2000 | Chelsea |
| 43 | Cardiff City | 1 | 2013-14 | 28 Dec 2013 | 28 Dec 2013 | Sunderland |
| 44 | Huddersfield Town | 1 | 2017-18 | 26 Nov 2017 | 26 Nov 2017 | Manchester City |
| 45 | Hull City | 1 | 2008-09 | 21 Sep 2008 | 21 Sep 2008 | Everton |
| 46 | Leeds United | 1 | 1992-93 | 24 Mar 1993 | 24 Mar 1993 | Chelsea |
| 47 | Luton Town | 1 | 2023-24 | 10 Dec 2023 | 10 Dec 2023 | Manchester City |
| 48 | Oldham Athletic | 1 | 1992-93 | 19 Aug 1992 | 19 Aug 1992 | Crystal Palace |
| 49 | Portsmouth | 1 | 2004-05 | 02 Oct 2004 | 02 Oct 2004 | Norwich City |
| 50 | Swindon Town | 1 | 1993-94 | 29 Dec 1993 | 29 Dec 1993 | Sheffield Wednesday |
| 51 | Watford | 1 | 1999-00 | 06 Nov 1999 | 06 Nov 1999 | Sheffield Wednesday |
SQL Query Used
-- Longest consecutive run of matches where each team led at half-time but failed to win
copy (
with team_games as (
select
match_id,
season_label,
kickoff_at,
home_team_abbr as team_abbr,
home_team_name as team_name,
away_team_abbr as opponent_abbr,
away_team_name as opponent_name,
home_half_time_score as ht_goals_for,
away_half_time_score as ht_goals_against,
result = 'home_win' as is_win
from "premier_league"."main"."fct_matches"
union all
select
match_id,
season_label,
kickoff_at,
away_team_abbr as team_abbr,
away_team_name as team_name,
home_team_abbr as opponent_abbr,
home_team_name as opponent_name,
away_half_time_score as ht_goals_for,
home_half_time_score as ht_goals_against,
result = 'away_win' as is_win
from "premier_league"."main"."fct_matches"
),
games_ranked as (
select
*,
row_number() over (
partition by team_abbr
order by kickoff_at, match_id
) as rn
from team_games
),
flagged as (
select
*,
rn - row_number() over (
partition by team_abbr
order by kickoff_at, match_id
) as grp
from games_ranked
where ht_goals_for > ht_goals_against and not is_win
),
runs as (
select
team_abbr,
min(team_name) as team_name,
min(season_label) as start_season,
max(season_label) as end_season,
count(*) as run_length,
min(kickoff_at) as start_at,
max(kickoff_at) as end_at,
grp
from flagged
group by team_abbr, grp
),
ranked_runs as (
select
*,
row_number() over (
partition by team_abbr
order by run_length desc, start_at, team_name
) as rn
from runs
),
final as (
select * from ranked_runs where rn = 1
)
select
f.team_name,
f.team_abbr,
f.run_length,
case
when f.start_season = f.end_season then f.start_season
else f.start_season || ' → ' || f.end_season
end as seasons,
date(f.start_at) as start_date,
date(f.end_at) as end_date,
(
select string_agg(w.opponent_name, ', ' order by w.kickoff_at, w.match_id)
from flagged w
where w.team_abbr = f.team_abbr and w.grp = f.grp
) as opponents
from final f
order by f.run_length desc, f.team_name
)
to 'assets/data/ht_lead_no_win_streaks.csv' (header, delimiter ',')