Dominik Hašek vs. Roberto Luongo: Head-to-Head Stats Comparison

Compare players and teams or see head to head results between teams, players, or player vs. team. • Tutorial VideoSample SearchesData Coverage
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 »
--------------------------------------

header_comp

WITH
  h2h_record AS (
SELECT p1.person_id as p1_person_id, SUM(p1.win  AND p1.type="reg")  as p1_rs_wins, SUM(p1.win  AND p1.type="post") as p1_po_wins, SUM(p1.loss AND p1.type="reg")  as p1_rs_losses, SUM(p1.loss AND p1.type="post") as p1_po_losses, SUM(p1.tie  AND p1.type="reg")  as p1_rs_ties, SUM(p1.tie  AND p1.type="post") as p1_po_ties, p2.person_id as p2_person_id, SUM(p2.win  AND p2.type="reg")  as p2_rs_wins, SUM(p2.win  AND p2.type="post") as p2_po_wins, SUM(p2.loss AND p2.type="reg")  as p2_rs_losses, SUM(p2.loss AND p2.type="post") as p2_po_losses, SUM(p2.tie  AND p2.type="reg")  as p2_rs_ties, SUM(p2.tie  AND p2.type="post") as p2_po_ties
FROM (SELECT person_id, win as win, (loss=1 AND (year_id<2000 OR type="post" OR overtimes=0)) as loss, (tie=1 OR (year_id>=2000 AND type="reg" AND loss=1 AND overtimes=1)) as tie, game_id, type, team_id
FROM sup_team_games
  JOIN sup_games USING (game_id)
  JOIN sup_player_games USING (game_id, team_id)
  JOIN sup_phase_seasons USING (year_id, comp_id, phase_id)
WHERE person_id=?  ) as p1
  JOIN (SELECT person_id, win as win, (loss=1 AND (year_id<2000 OR type="post" OR overtimes=0)) as loss, (tie=1 OR (year_id>=2000 AND type="reg" AND loss=1 AND overtimes=1)) as tie, game_id, type, team_id FROM sup_team_games
  JOIN sup_games USING (game_id)
  JOIN sup_player_games USING (game_id, team_id)
  JOIN sup_phase_seasons USING (year_id, comp_id, phase_id)
WHERE person_id=?  ) as p2 ON p1.game_id=p2.game_id AND p1.team_id!=p2.team_id
  ),
  h2h_record_tot AS (
SELECT person_id, rs_wins, rs_losses, rs_ties, po_wins, po_losses, po_ties
FROM (SELECT p1_person_id as person_id, p1_rs_wins as rs_wins, p1_rs_losses as rs_losses, p1_rs_ties as rs_ties, p1_po_wins as po_wins, p1_po_losses as po_losses, p1_po_ties as po_ties
FROM h2h_record
  UNION SELECT p2_person_id as person_id, p2_rs_wins as rs_wins, p2_rs_losses as rs_losses, p2_rs_ties as rs_ties, p2_po_wins as po_wins, p2_po_losses as po_losses, p2_po_ties as po_ties
FROM h2h_record) as zzz
WHERE 1  
  )
SELECT person_id, rs_wins, rs_losses, rs_ties, po_wins, po_losses, po_ties, SUM(goalie_games) AS goalie_games, IF(SUM(goalie_wins+goalie_ties+goalie_losses), (SUM(goalie_wins)+(SUM(goalie_ties)*0.5))/(SUM(goalie_wins)+SUM(goalie_losses)+SUM(goalie_ties)), 0) as goalie_record_csk, CONCAT(SUM(goalie_wins),"-",SUM(goalie_losses),"-",SUM(goalie_ties)) AS goalie_record, SUM(goalie_goals_against) AS goalie_goals_against, SUM(goalie_shutouts) AS goalie_shutouts, 3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)) as goals_against_avg_csk, TRIM(LEADING '0' FROM ROUND(3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)),2)) AS goals_against_avg, SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against) as save_pct_goalie_csk, TRIM(LEADING '0' FROM ROUND(SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against),3)) AS save_pct_goalie, (SUM(goalie_goals_against * (st.year_id>=1956))/SUM(goalie_shots_against * (st.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(st.year_id)) AND MAX(st.year_id) AND leagues.lg_id = st.comp_id)) as ga_pct_minus_csk, ROUND(100 * ((SUM(goalie_goals_against * (st.year_id>=1956))/SUM(goalie_shots_against * (st.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(st.year_id)) AND MAX(st.year_id) AND leagues.lg_id = st.comp_id))),0) AS ga_pct_minus, SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (st.year_id>=1956) FROM leagues WHERE year_id=st.year_id) - (goalie_goals_against*(st.year_id>=1956))) as gs_above_avg_csk, ROUND(SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (st.year_id>=1956) FROM leagues WHERE year_id=st.year_id) - (goalie_goals_against*(st.year_id>=1956))),1) AS gs_above_avg, SUM(ps) as ps_csk, ROUND(SUM(ps),1) AS ps
FROM sup_player_team_seasons as st
  JOIN sup_people USING (person_id)
  JOIN sup_players USING (person_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN sup_comp_seasons USING (comp_id, year_id)
  LEFT JOIN h2h_record_tot USING (person_id)
WHERE ((person_id=?) OR (person_id=?))
  AND type="reg" 
GROUP BY person_id
ORDER BY person_id 

SQL PARAMS -- $VAR1 = [
          'hasekdo01',
          'luongro01',
          'luongro01',
          'hasekdo01'
        ];
SELECT name_short, name, award_id FROM sup_awards WHERE award_id IN ("hart","vezina","smythe","AS") GROUP BY award_id

SQL PARAMS -- $VAR1 = [];

WITH
  champ AS (
SELECT person_id, COUNT(*) as championships
FROM sup_player_team_seasons
  LEFT JOIN sup_team_seasons USING (team_id, year_id, comp_id, phase_id) 
WHERE person_id=? AND phase_id='NHL_PS' AND is_cup_champion=1 
  ),
  awards AS (
SELECT person_id,
  SUM(award_id="AS") as `AS`, SUM(award_id="hart") as `hart`, SUM(award_id="smythe") as `smythe`, SUM(award_id="vezina") as `vezina`
FROM sup_awards_players
WHERE person_id=? AND comp_id='NHL' 
  )
SELECT person_id, is_hof, championships, awards.* FROM sup_players
  LEFT JOIN awards USING (person_id)
  LEFT JOIN champ USING (person_id)
WHERE person_id=?


SQL PARAMS -- $VAR1 = [
          'hasekdo01',
          'hasekdo01',
          'hasekdo01'
        ];

WITH
  champ AS (
SELECT person_id, COUNT(*) as championships
FROM sup_player_team_seasons
  LEFT JOIN sup_team_seasons USING (team_id, year_id, comp_id, phase_id) 
WHERE person_id=? AND phase_id='NHL_PS' AND is_cup_champion=1 
  ),
  awards AS (
SELECT person_id,
  SUM(award_id="AS") as `AS`, SUM(award_id="hart") as `hart`, SUM(award_id="smythe") as `smythe`, SUM(award_id="vezina") as `vezina`
FROM sup_awards_players
WHERE person_id=? AND comp_id='NHL' 
  )
SELECT person_id, is_hof, championships, awards.* FROM sup_players
  LEFT JOIN awards USING (person_id)
  LEFT JOIN champ USING (person_id)
WHERE person_id=?


SQL PARAMS -- $VAR1 = [
          'luongro01',
          'luongro01',
          'luongro01'
        ];

--------------------------------------

h2h_sum_g

Page Setup Time: 0.00195 seconds

WITH
  pgames AS (
SELECT person_id, game_id, team_id, year_id
FROM sup_team_games
  JOIN sup_player_games USING (game_id, team_id)
  JOIN sup_phase_seasons USING (year_id, comp_id, phase_id)
WHERE comp_id=?  
  ),
  pgames_list AS (
SELECT p1.game_id
FROM (SELECT game_id, team_id
FROM pgames
WHERE person_id=?  ) as p1
  JOIN (SELECT game_id, team_id FROM pgames WHERE person_id=?  ) as p2 ON p1.game_id=p2.game_id AND p1.team_id!=p2.team_id
  )
SELECT person_id, COUNT(*) AS goalie_games, SUM(goalie_started=1) AS goalie_starts, SUM(goalie_decision="W") AS goalie_wins, SUM(goalie_decision="L") AS goalie_losses, SUM(goalie_decision="T" OR goalie_decision="O") AS goalie_ties, SUM(goalie_goals_against) AS goalie_goals_against, SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against) as save_pct_goalie_csk, TRIM(LEADING '0' FROM ROUND(SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against),3)) AS save_pct_goalie, 3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)) as goals_against_avg_csk, TRIM(LEADING '0' FROM ROUND(3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)),2)) AS goals_against_avg, SUM(goalie_saves) AS goalie_saves, SUM(goalie_shots_against) AS shots_against_goalie, (SUM(goalie_goals_against * (tg.year_id>=1956))/SUM(goalie_shots_against * (tg.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(tg.year_id)) AND MAX(tg.year_id) AND leagues.lg_id = tg.comp_id)) as ga_pct_minus_csk, ROUND(100 * ((SUM(goalie_goals_against * (tg.year_id>=1956))/SUM(goalie_shots_against * (tg.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(tg.year_id)) AND MAX(tg.year_id) AND leagues.lg_id = tg.comp_id))),0) AS ga_pct_minus, SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (tg.year_id>=1956) FROM leagues WHERE year_id=tg.year_id) - (goalie_goals_against*(tg.year_id>=1956))) as gs_above_avg_csk, ROUND(SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (tg.year_id>=1956) FROM leagues WHERE year_id=tg.year_id) - (goalie_goals_against*(tg.year_id>=1956))),1) AS gs_above_avg, SUM(goalie_shutouts) AS goalie_shutouts, SUM(pen_min) AS pen_min, SUM(time_on_ice)/60 as goalie_min_csk, CONCAT_WS(':', FLOOR(SUM(st.time_on_ice) / 60), LPAD(IF(ROUND(MOD(SUM(st.time_on_ice), 60)) >= 60, 0, ROUND(MOD(SUM(st.time_on_ice), 60))), 2, '0')) AS goalie_min, SUM(goalie_quality_start) AS quality_starts, (SUM(goalie_quality_start)/SUM(goalie_started)) as quality_starts_pct_csk, TRIM(LEADING '0' FROM ROUND((SUM(goalie_quality_start)/SUM(goalie_started)),3)) AS quality_starts_pct, SUM(goalie_really_bad_start) AS goalie_really_bad_starts, SUM(goals) AS goals, SUM(assists) AS assists, SUM(points) AS points
FROM sup_player_games as st
  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 FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_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)
  JOIN pgames_list USING (game_id)
WHERE ((person_id=?) OR (person_id=?))
  AND type="reg" 
GROUP BY person_id LIMIT 0, 200

SQL PARAMS -- $VAR1 = [
          'NHL',
          'hasekdo01',
          'luongro01',
          'luongro01',
          'hasekdo01'
        ];

Query Time: 0.03 seconds
WITH
  pgames AS (
SELECT person_id, game_id, team_id, year_id
FROM sup_team_games
  JOIN sup_player_games USING (game_id, team_id)
  JOIN sup_phase_seasons USING (year_id, comp_id, phase_id)
WHERE comp_id=?  
  ),
  pgames_list AS (
SELECT p1.game_id
FROM (SELECT game_id, team_id
FROM pgames
WHERE person_id=?  ) as p1
  JOIN (SELECT game_id, team_id FROM pgames WHERE person_id=?  ) as p2 ON p1.game_id=p2.game_id AND p1.team_id!=p2.team_id
  )
SELECT person_id, COUNT(*) AS goalie_games, SUM(goalie_started=1) AS goalie_starts, SUM(goalie_decision="W") AS goalie_wins, SUM(goalie_decision="L") AS goalie_losses, SUM(goalie_decision="T" OR goalie_decision="O") AS goalie_ties, SUM(goalie_goals_against) AS goalie_goals_against, SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against) as save_pct_goalie_csk, TRIM(LEADING '0' FROM ROUND(SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against),3)) AS save_pct_goalie, 3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)) as goals_against_avg_csk, TRIM(LEADING '0' FROM ROUND(3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)),2)) AS goals_against_avg, SUM(goalie_saves) AS goalie_saves, SUM(goalie_shots_against) AS shots_against_goalie, (SUM(goalie_goals_against * (tg.year_id>=1956))/SUM(goalie_shots_against * (tg.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(tg.year_id)) AND MAX(tg.year_id) AND leagues.lg_id = tg.comp_id)) as ga_pct_minus_csk, ROUND(100 * ((SUM(goalie_goals_against * (tg.year_id>=1956))/SUM(goalie_shots_against * (tg.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(tg.year_id)) AND MAX(tg.year_id) AND leagues.lg_id = tg.comp_id))),0) AS ga_pct_minus, SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (tg.year_id>=1956) FROM leagues WHERE year_id=tg.year_id) - (goalie_goals_against*(tg.year_id>=1956))) as gs_above_avg_csk, ROUND(SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (tg.year_id>=1956) FROM leagues WHERE year_id=tg.year_id) - (goalie_goals_against*(tg.year_id>=1956))),1) AS gs_above_avg, SUM(goalie_shutouts) AS goalie_shutouts, SUM(pen_min) AS pen_min, SUM(time_on_ice)/60 as goalie_min_csk, CONCAT_WS(':', FLOOR(SUM(st.time_on_ice) / 60), LPAD(IF(ROUND(MOD(SUM(st.time_on_ice), 60)) >= 60, 0, ROUND(MOD(SUM(st.time_on_ice), 60))), 2, '0')) AS goalie_min, SUM(goalie_quality_start) AS quality_starts, (SUM(goalie_quality_start)/SUM(goalie_started)) as quality_starts_pct_csk, TRIM(LEADING '0' FROM ROUND((SUM(goalie_quality_start)/SUM(goalie_started)),3)) AS quality_starts_pct, SUM(goalie_really_bad_start) AS goalie_really_bad_starts, SUM(goals) AS goals, SUM(assists) AS assists, SUM(points) AS points
FROM sup_player_games as st
  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 FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_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)
  JOIN pgames_list USING (game_id)
WHERE ((person_id=?) OR (person_id=?))
  AND type="post" 
GROUP BY person_id LIMIT 0, 200

SQL PARAMS -- $VAR1 = [
          'NHL',
          'hasekdo01',
          'luongro01',
          'luongro01',
          'hasekdo01'
        ];

Query Time: 0.02 seconds
Table Build Time: 0.04 seconds


--------------------------------------

h2h_gamelogs_g

Page Setup Time: 0.00102 seconds

WITH
  pgames AS (
SELECT person_id, game_id, team_id, year_id
FROM sup_team_games
  JOIN sup_player_games USING (game_id, team_id)
  JOIN sup_phase_seasons USING (year_id, comp_id, phase_id)
WHERE comp_id=?  
  ),
  pgames_list AS (
SELECT p1.game_id
FROM (SELECT game_id, team_id
FROM pgames
WHERE person_id=?  ) as p1
  JOIN (SELECT game_id, team_id FROM pgames WHERE person_id=?  ) as p2 ON p1.game_id=p2.game_id AND p1.team_id!=p2.team_id
  )
SELECT person_id, ts.name_abbr as team_name_abbr, ts.link as team_link, game_id, date, sup_games.link as game_link, CASE WHEN goalie_decision="W" THEN 2 WHEN goalie_decision="O" THEN 1 WHEN goalie_decision="L" THEN 0 ELSE -1 END as goalie_decision_csk, goalie_decision, time_on_ice/60 as goalie_min_csk, CONCAT_WS(':', FLOOR(st.time_on_ice / 60), LPAD(IF(ROUND(MOD(st.time_on_ice, 60)) >= 60, 0, ROUND(MOD(st.time_on_ice, 60))), 2, '0')) AS goalie_min, goalie_goals_against, goalie_saves, goalie_shots_against AS shots_against_goalie, (goalie_shots_against - goalie_goals_against) / goalie_shots_against as save_pct_goalie_csk, TRIM(LEADING '0' FROM ROUND((goalie_shots_against - goalie_goals_against) / goalie_shots_against,3)) AS save_pct_goalie, 3600 * (goalie_goals_against / time_on_ice) as goals_against_avg_csk, TRIM(LEADING '0' FROM ROUND(3600 * (goalie_goals_against / time_on_ice),2)) AS goals_against_avg, pen_min, goals, assists, points
FROM sup_player_games as st
  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 FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_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)
  JOIN pgames_list USING (game_id)
WHERE ((person_id=?) OR (person_id=?))
  AND type="reg" 
ORDER BY date DESC, person_id LIMIT 0, 20

SQL PARAMS -- $VAR1 = [
          'NHL',
          'hasekdo01',
          'luongro01',
          'luongro01',
          'hasekdo01'
        ];

Query Time: 0.04 seconds
WITH
  pgames AS (
SELECT person_id, game_id, team_id, year_id
FROM sup_team_games
  JOIN sup_player_games USING (game_id, team_id)
  JOIN sup_phase_seasons USING (year_id, comp_id, phase_id)
WHERE comp_id=?  
  ),
  pgames_list AS (
SELECT p1.game_id
FROM (SELECT game_id, team_id
FROM pgames
WHERE person_id=?  ) as p1
  JOIN (SELECT game_id, team_id FROM pgames WHERE person_id=?  ) as p2 ON p1.game_id=p2.game_id AND p1.team_id!=p2.team_id
  )
SELECT person_id, ts.name_abbr as team_name_abbr, ts.link as team_link, game_id, date, sup_games.link as game_link, CASE WHEN goalie_decision="W" THEN 2 WHEN goalie_decision="O" THEN 1 WHEN goalie_decision="L" THEN 0 ELSE -1 END as goalie_decision_csk, goalie_decision, time_on_ice/60 as goalie_min_csk, CONCAT_WS(':', FLOOR(st.time_on_ice / 60), LPAD(IF(ROUND(MOD(st.time_on_ice, 60)) >= 60, 0, ROUND(MOD(st.time_on_ice, 60))), 2, '0')) AS goalie_min, goalie_goals_against, goalie_saves, goalie_shots_against AS shots_against_goalie, (goalie_shots_against - goalie_goals_against) / goalie_shots_against as save_pct_goalie_csk, TRIM(LEADING '0' FROM ROUND((goalie_shots_against - goalie_goals_against) / goalie_shots_against,3)) AS save_pct_goalie, 3600 * (goalie_goals_against / time_on_ice) as goals_against_avg_csk, TRIM(LEADING '0' FROM ROUND(3600 * (goalie_goals_against / time_on_ice),2)) AS goals_against_avg, pen_min, goals, assists, points
FROM sup_player_games as st
  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 FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_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)
  JOIN pgames_list USING (game_id)
WHERE ((person_id=?) OR (person_id=?))
  AND type="post" 
ORDER BY date DESC, person_id LIMIT 0, 20

SQL PARAMS -- $VAR1 = [
          'NHL',
          'hasekdo01',
          'luongro01',
          'luongro01',
          'hasekdo01'
        ];

Query Time: 0.02 seconds
Table Build Time: 0.05 seconds


--------------------------------------

player_comp_g

Page Setup Time: 0.00237 seconds

SELECT person_id, IF(MIN(age)=MAX(age), MIN(age), CONCAT(MIN(age), '-', MAX(age))) as age_range, MIN(year_id) as year_min_csk, CONCAT(MIN(year_id)-1,'-',SUBSTRING(MIN(year_id),3,2)) as year_min, MAX(year_id) as year_max_csk, CONCAT(MAX(year_id)-1,'-',SUBSTRING(MAX(year_id),3,2)) as year_max, NULL as goalie_games_incomplete, SUM(goalie_games) AS goalie_games, SUM(goalie_starts IS NULL) as goalie_starts_incomplete, SUM(goalie_starts) AS goalie_starts, NULL as goalie_wins_incomplete, SUM(goalie_wins) AS goalie_wins, NULL as goalie_losses_incomplete, SUM(goalie_losses) AS goalie_losses, NULL as goalie_ties_incomplete, SUM(goalie_ties) AS goalie_ties, SUM(goalie_goals_against IS NULL) as goalie_goals_against_incomplete, SUM(goalie_goals_against) AS goalie_goals_against, SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against) as save_pct_goalie_csk, SUM(goalie_shots_against IS NULL)+SUM(goalie_goals_against IS NULL) as save_pct_goalie_incomplete, TRIM(LEADING '0' FROM ROUND(SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against),3)) AS save_pct_goalie, 3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)) as goals_against_avg_csk, SUM(time_on_ice IS NULL)+SUM(goalie_goals_against IS NULL) as goals_against_avg_incomplete, TRIM(LEADING '0' FROM ROUND(3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)),2)) AS goals_against_avg, SUM(goalie_saves IS NULL) as goalie_saves_incomplete, SUM(goalie_saves) AS goalie_saves, SUM(goalie_shots_against IS NULL) as shots_against_goalie_incomplete, SUM(goalie_shots_against) AS shots_against_goalie, (SUM(goalie_goals_against * (st.year_id>=1956))/SUM(goalie_shots_against * (st.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(st.year_id)) AND MAX(st.year_id) AND leagues.lg_id = st.comp_id)) as ga_pct_minus_csk, if(year_id>1956,0,1) as ga_pct_minus_incomplete, ROUND(100 * ((SUM(goalie_goals_against * (st.year_id>=1956))/SUM(goalie_shots_against * (st.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(st.year_id)) AND MAX(st.year_id) AND leagues.lg_id = st.comp_id))),0) AS ga_pct_minus, SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (st.year_id>=1956) FROM leagues WHERE year_id=st.year_id) - (goalie_goals_against*(st.year_id>=1956))) as gs_above_avg_csk, IF(year_id>1956,0,1) as gs_above_avg_incomplete, ROUND(SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (st.year_id>=1956) FROM leagues WHERE year_id=st.year_id) - (goalie_goals_against*(st.year_id>=1956))),1) AS gs_above_avg, SUM(goalie_shutouts IS NULL) as goalie_shutouts_incomplete, SUM(goalie_shutouts) AS goalie_shutouts, SUM(pen_min IS NULL) as pen_min_incomplete, SUM(pen_min) AS pen_min, SUM(goalie_min) as goalie_min_csk, SUM(goalie_min IS NULL) as goalie_min_incomplete, CONCAT_WS(':', FLOOR(SUM(st.time_on_ice) / 60), LPAD(IF(ROUND(MOD(SUM(st.time_on_ice), 60)) >= 60, 0, ROUND(MOD(SUM(st.time_on_ice), 60))), 2, '0')) AS goalie_min, SUM(goalie_quality_starts IS NULL) as quality_starts_incomplete, SUM(goalie_quality_starts) AS quality_starts, (SUM(goalie_quality_starts)/SUM(goalie_starts)) as quality_starts_pct_csk, SUM(goalie_starts IS NULL)+SUM(goalie_quality_starts IS NULL) as quality_starts_pct_incomplete, TRIM(LEADING '0' FROM ROUND((SUM(goalie_quality_starts)/SUM(goalie_starts)),3)) AS quality_starts_pct, SUM(goalie_really_bad_starts IS NULL) as goalie_really_bad_starts_incomplete, SUM(goalie_really_bad_starts) AS goalie_really_bad_starts, SUM(goals IS NULL) as goals_incomplete, SUM(goals) AS goals, SUM(assists IS NULL) as assists_incomplete, SUM(assists) AS assists, SUM(points IS NULL) as points_incomplete, SUM(points) AS points
FROM sup_player_team_seasons as st
  JOIN sup_people USING (person_id)
  JOIN sup_players USING (person_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN sup_comp_seasons USING (comp_id, year_id)
WHERE ((person_id=?) OR (person_id=?))
  AND type="reg" 
GROUP BY person_id
ORDER BY person_id 

SQL PARAMS -- $VAR1 = [
          'luongro01',
          'hasekdo01'
        ];

Query Time: 0.01 seconds
SELECT person_id, IF(MIN(age)=MAX(age), MIN(age), CONCAT(MIN(age), '-', MAX(age))) as age_range, MIN(year_id) as year_min_csk, CONCAT(MIN(year_id)-1,'-',SUBSTRING(MIN(year_id),3,2)) as year_min, MAX(year_id) as year_max_csk, CONCAT(MAX(year_id)-1,'-',SUBSTRING(MAX(year_id),3,2)) as year_max, NULL as goalie_games_incomplete, SUM(goalie_games) AS goalie_games, SUM(goalie_starts IS NULL) as goalie_starts_incomplete, SUM(goalie_starts) AS goalie_starts, NULL as goalie_wins_incomplete, SUM(goalie_wins) AS goalie_wins, NULL as goalie_losses_incomplete, SUM(goalie_losses) AS goalie_losses, NULL as goalie_ties_incomplete, SUM(goalie_ties) AS goalie_ties, SUM(goalie_goals_against IS NULL) as goalie_goals_against_incomplete, SUM(goalie_goals_against) AS goalie_goals_against, SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against) as save_pct_goalie_csk, SUM(goalie_shots_against IS NULL)+SUM(goalie_goals_against IS NULL) as save_pct_goalie_incomplete, TRIM(LEADING '0' FROM ROUND(SUM(goalie_shots_against - goalie_goals_against) / SUM(goalie_shots_against),3)) AS save_pct_goalie, 3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)) as goals_against_avg_csk, SUM(time_on_ice IS NULL)+SUM(goalie_goals_against IS NULL) as goals_against_avg_incomplete, TRIM(LEADING '0' FROM ROUND(3600 * (SUM((time_on_ice IS NOT NULL) * goalie_goals_against) / SUM(time_on_ice)),2)) AS goals_against_avg, SUM(goalie_saves IS NULL) as goalie_saves_incomplete, SUM(goalie_saves) AS goalie_saves, SUM(goalie_shots_against IS NULL) as shots_against_goalie_incomplete, SUM(goalie_shots_against) AS shots_against_goalie, (SUM(goalie_goals_against * (st.year_id>=1956))/SUM(goalie_shots_against * (st.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(st.year_id)) AND MAX(st.year_id) AND leagues.lg_id = st.comp_id)) as ga_pct_minus_csk, if(year_id>1956,0,1) as ga_pct_minus_incomplete, ROUND(100 * ((SUM(goalie_goals_against * (st.year_id>=1956))/SUM(goalie_shots_against * (st.year_id>=1956))) / ((SELECT SUM(goals_against)/SUM(shots_against) FROM leagues WHERE leagues.year_id BETWEEN GREATEST(1956, MIN(st.year_id)) AND MAX(st.year_id) AND leagues.lg_id = st.comp_id))),0) AS ga_pct_minus, SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (st.year_id>=1956) FROM leagues WHERE year_id=st.year_id) - (goalie_goals_against*(st.year_id>=1956))) as gs_above_avg_csk, IF(year_id>1956,0,1) as gs_above_avg_incomplete, ROUND(SUM((SELECT (goals_against / shots_against) * goalie_shots_against * (st.year_id>=1956) FROM leagues WHERE year_id=st.year_id) - (goalie_goals_against*(st.year_id>=1956))),1) AS gs_above_avg, SUM(goalie_shutouts IS NULL) as goalie_shutouts_incomplete, SUM(goalie_shutouts) AS goalie_shutouts, SUM(pen_min IS NULL) as pen_min_incomplete, SUM(pen_min) AS pen_min, SUM(goalie_min) as goalie_min_csk, SUM(goalie_min IS NULL) as goalie_min_incomplete, CONCAT_WS(':', FLOOR(SUM(st.time_on_ice) / 60), LPAD(IF(ROUND(MOD(SUM(st.time_on_ice), 60)) >= 60, 0, ROUND(MOD(SUM(st.time_on_ice), 60))), 2, '0')) AS goalie_min, SUM(goalie_quality_starts IS NULL) as quality_starts_incomplete, SUM(goalie_quality_starts) AS quality_starts, (SUM(goalie_quality_starts)/SUM(goalie_starts)) as quality_starts_pct_csk, SUM(goalie_starts IS NULL)+SUM(goalie_quality_starts IS NULL) as quality_starts_pct_incomplete, TRIM(LEADING '0' FROM ROUND((SUM(goalie_quality_starts)/SUM(goalie_starts)),3)) AS quality_starts_pct, SUM(goalie_really_bad_starts IS NULL) as goalie_really_bad_starts_incomplete, SUM(goalie_really_bad_starts) AS goalie_really_bad_starts, SUM(goals IS NULL) as goals_incomplete, SUM(goals) AS goals, SUM(assists IS NULL) as assists_incomplete, SUM(assists) AS assists, SUM(points IS NULL) as points_incomplete, SUM(points) AS points
FROM sup_player_team_seasons as st
  JOIN sup_people USING (person_id)
  JOIN sup_players USING (person_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN sup_comp_seasons USING (comp_id, year_id)
WHERE ((person_id=?) OR (person_id=?))
  AND type="post" 
GROUP BY person_id
ORDER BY person_id 

SQL PARAMS -- $VAR1 = [
          'luongro01',
          'hasekdo01'
        ];

Query Time: 0.00 seconds
Table Build Time: 0.03 seconds

Table Build Time: 0.03 seconds


--------------------------------------
SH->PARAM -- $VAR1 = {
          't1yrto' => 2025,
          'match' => 'versus_playervplayer',
          't2yrto' => 2025,
          'player_id1' => 'hasekdo01',
          'comp_id' => 'NHL',
          'player_id2' => 'luongro01'
        };
SH->PARAM_NO_DEFAULT -- $VAR1 = {
          'player_id2' => 'luongro01',
          'player_id1' => 'hasekdo01',
          'comp_id' => 'NHL'
        };
Show Criteria
Share Results

Search Criteria

Seasons
Player 1
Javascript is required for the selection of a player.
Choice is: Dominik Hašek 
Player 2
Javascript is required for the selection of a player.
Choice is: Roberto Luongo 
Player 3
Javascript is required for the selection of a player.
Player 4
Javascript is required for the selection of a player.
Player 5
Javascript is required for the selection of a player.
Player 6
Javascript is required for the selection of a player.
Team 1
Team 2

You have edited your search criteria

or keep editing your search

clear changes

Fetching Results

Stathead spinner
Head-to-Head
8-3-1
Reg Season
4-6-2
Overall Stats
 735 
 389-223-95 
 1572 
 81 
 2.20 
 .922 
 79 
 396.5 
 156.8 
GP
Record
GA
SO
GAA
SV%
GA%-
GSAA
PS
 1044 
 489-392-124 
 2515 
 77 
 2.52 
 .919 
 90 
 277.4 
 217.8 
Awards & Honors
 ✓ 
2
2
6
6
Hall of Fame
Championships
Hart
Vezina
ASnhl
 ✓ 
 
 
 
2

Dominik Hašek vs. Roberto Luongo: Head-to-Head Stats

Dominik Hašek vs. Roberto Luongo: Goaltending Totals

Dominik Hašek vs. Roberto Luongo: Goaltending Game Logs

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.

Dominik Hašek vs. Roberto Luongo: Player Comparison

Dominik Hašek vs. Roberto Luongo: Goaltending Totals

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.