Baselight
-- Query 2 - FINAL: Handle duplicate team records in Baselight
WITH team_season_performance AS (
  SELECT 
    ms.team_id,
    -- Use DISTINCT to get unique team info (handles duplicate team records)
    MAX(t.name) as team_name,
    MAX(c.name) as league,
    MAX(c.country) as country,
    -- Get xG directly from match_stats (no team table join duplication)
    SUM(CAST(ms.value AS DOUBLE)) as total_xg,
    -- Calculate goals and points
    SUM(CASE 
      WHEN m.home_team_id = ms.team_id THEN COALESCE(m.home_score, 0)
      WHEN m.away_team_id = ms.team_id THEN COALESCE(m.away_score, 0)
      ELSE 0
    END) as total_goals,
    SUM(CASE 
      WHEN m.home_team_id = ms.team_id AND m.home_score > m.away_score THEN 3
      WHEN m.away_team_id = ms.team_id AND m.away_score > m.home_score THEN 3
      WHEN m.home_score = m.away_score THEN 1
      ELSE 0
    END) as total_points,
    SUM(CASE 
      WHEN m.home_team_id = ms.team_id THEN COALESCE(m.home_score, 0) - COALESCE(m.away_score, 0)
      WHEN m.away_team_id = ms.team_id THEN COALESCE(m.away_score, 0) - COALESCE(m.home_score, 0)
      ELSE 0
    END) as goal_difference,
    COUNT(DISTINCT ms.match_id) as games_played
  FROM "@blt.ultimate_soccer_dataset.match_stats" ms
  JOIN "@blt.ultimate_soccer_dataset.matches" m ON ms.match_id = m.match_id
  JOIN "@blt.ultimate_soccer_dataset.seasons" s ON m.season_id = s.season_id
  JOIN "@blt.ultimate_soccer_dataset.competitions" c ON s.competition_id = c.competition_id
  -- Use DISTINCT to avoid duplicate team issues
  JOIN (SELECT DISTINCT team_id, name, country FROM "@blt.ultimate_soccer_dataset.teams") t ON ms.team_id = t.team_id
  WHERE s.season_id IN (
    '8a5c7169-9664-5691-9297-6d41a5d72ec9', -- La Liga 2024/25
    '49d5dcd6-7a63-5354-8774-c6cdfa41d771', -- Ligue 1 2024/25
    'c9251047-c6a9-56bf-9861-60bcb289bf10', -- Premier League 2024/25
    '7b34e935-9086-5c7d-852b-a82ba18c31be', -- Primeira Liga 2024/25
  )
    AND c.name IN ('Premier League', 'La Liga', 'Serie A', 'Bundesliga', 'Ligue 1', 'Primeira Liga')
    AND m.status = 'Match Finished'
    AND ms.type = 'expected_goals'
  GROUP BY ms.team_id
)
SELECT 
  team_name,
  league,
  country,
  ROUND(total_xg, 2) as total_xg,
  total_points,
  goal_difference,
  total_goals,
  games_played,
  RANK() OVER (PARTITION BY league ORDER BY total_points DESC, goal_difference DESC) as current_position
FROM team_season_performance
WHERE games_played >= 2
ORDER BY total_xg DESC;
team_nameleaguecountrytotal_xgtotal_pointsgoal_differencetotal_goalsgames_playedcurrent_position
Paris Saint GermainLigue 1France89.91845792341
BarcelonaLa LigaSpain88.88863102381
LiverpoolPremier LeagueEngland83.39844586381
BenficaPrimeira LigaPortugal75.87805684342
Real MadridLa LigaSpain75.23844078382
MonacoLigue 1France74.47612263343
Sporting CPPrimeira LigaPortugal72.62826188341
ChelseaPremier LeagueEngland69.09692164384
Manchester CityPremier LeagueEngland68.59712872383
VillarrealLa LigaSpain66.05702071385
Atletico MadridLa LigaSpain65.67763868383
NewcastlePremier LeagueEngland65.44662168385
BournemouthPremier LeagueEngland64.96561258389
MarseilleLigue 1France64.82652774342
NiceLigue 1France62.16602566344
Crystal PalacePremier LeagueEngland61.67530513812
ArsenalPremier LeagueEngland61.43743569382
LyonLigue 1France61.14571965346
BrentfordPremier LeagueEngland60.19569663810
TottenhamPremier LeagueEngland59.538-1643817
BrightonPremier LeagueEngland59.3261766388
Aston VillaPremier LeagueEngland57.2466758386
LilleLigue 1France55.63601652345
Celta VigoLa LigaSpain54.8855259387
Real BetisLa LigaSpain54.6860757386
FC PortoPrimeira LigaPortugal54.52713565343
LensLigue 1France53.3452342348
Athletic ClubLa LigaSpain53.32702554384
Manchester UnitedPremier LeagueEngland53.2342-10443815
SC BragaPrimeira LigaPortugal51662555344
FulhamPremier LeagueEngland49.94540543811
ToulouseLigue 1France49.51421443410
RennesLigue 1France49.19411513412
StrasbourgLigue 1France48.36571256347
West HamPremier LeagueEngland47.9643-16463814
Nottingham ForestPremier LeagueEngland46.78651258387
Stade Brestois 29Ligue 1France46.0950-752349
Rayo VallecanoLa LigaSpain45.5752-441388
OsasunaLa LigaSpain44.8852-448388
WolvesPremier LeagueEngland44.5142-15543816
AlavesLa LigaSpain43.9142-10383814
GironaLa LigaSpain42.9341-16443817
Le HavreLigue 1France42.5834-31403416
ValenciaLa LigaSpain42.5646-10443811
Real SociedadLa LigaSpain42.4446-11353812
SevillaLa LigaSpain42.2841-13423816
EvertonPremier LeagueEngland42.148-2423813
Santa ClaraPrimeira LigaPortugal41.9957436345
AuxerreLigue 1France41.7642-3483411
GuimaraesPrimeira LigaPortugal41.59541047346
EstorilPrimeira LigaPortugal39.8746-548348
NantesLigue 1France39.6936-13393413
AroucaPrimeira LigaPortugal38.9638-14353411
FamalicaoPrimeira LigaPortugal38.947544347
MallorcaLa LigaSpain38.8448-9353810
ReimsLigue 1France37.8434-16353615
Saint EtienneLigue 1France37.5530-38393417
GetafeLa LigaSpain37.3842-5343813
Rio AvePrimeira LigaPortugal36.2238-16393412
LeganesLa LigaSpain36.1540-17393818
AngersLigue 1France36.1436-21323414
Las PalmasLa LigaSpain35.7532-21403819
NacionalPrimeira LigaPortugal34.9734-18323414
MontpellierLigue 1France34.8216-56233418
ValladolidLa LigaSpain34.516-64263820
IpswichPremier LeagueEngland34.4822-46363819
EspanyolLa LigaSpain34.2342-11403815
SouthamptonPremier LeagueEngland33.1812-60263820
BoavistaPrimeira LigaPortugal32.6624-35243418
LeicesterPremier LeagueEngland32.525-47333818
GIL VicentePrimeira LigaPortugal32.0734-13343413
MoreirensePrimeira LigaPortugal31.4140-8423410
FarensePrimeira LigaPortugal30.5827-21253417
Casa PiaPrimeira LigaPortugal30.5345-539349
AVSPrimeira LigaPortugal30.328-35273516
EstrelaPrimeira LigaPortugal27.1329-26243415
MetzLigue 1Francenull424219

Share link

Anyone who has the link will be able to view this.