Ken Dryden vs. Dominik Hašek: Head-to-Head Stats Comparison
--------------------------------------
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',
'drydeke01',
'hasekdo01',
'drydeke01'
];
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 = [
'drydeke01',
'drydeke01',
'drydeke01'
];
--------------------------------------
h2h_sum_g
Page Setup Time: 0.00241 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',
'drydeke01',
'hasekdo01',
'drydeke01'
];
Query Time: 0.01 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',
'drydeke01',
'hasekdo01',
'drydeke01'
];
Query Time: 0.01 seconds
--------------------------------------
h2h_gamelogs_g
Page Setup Time: 0.00133 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',
'drydeke01',
'hasekdo01',
'drydeke01'
];
Query Time: 0.01 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',
'drydeke01',
'hasekdo01',
'drydeke01'
];
Query Time: 0.01 seconds
--------------------------------------
player_comp_g
Page Setup Time: 0.00232 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(goalie_goals_against IS NULL)+SUM(time_on_ice 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_quality_starts IS NULL)+SUM(goalie_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 = [
'hasekdo01',
'drydeke01'
];
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(goalie_goals_against IS NULL)+SUM(time_on_ice 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_quality_starts IS NULL)+SUM(goalie_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 = [
'hasekdo01',
'drydeke01'
];
Query Time: 0.01 seconds
Table Build Time: 0.04 seconds
Table Build Time: 0.04 seconds
--------------------------------------
SH->PARAM -- $VAR1 = {
't1yrto' => 2025,
't2yrto' => 2025,
'player_id2' => 'hasekdo01',
'match' => 'versus_playervplayer',
'player_id1' => 'drydeke01',
'comp_id' => 'NHL'
};
SH->PARAM_NO_DEFAULT -- $VAR1 = {
'player_id1' => 'drydeke01',
'comp_id' => 'NHL',
'player_id2' => 'hasekdo01'
};
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.


We're Social...for Statheads
Site Last Updated:
Question, Comment, Feedback, or Correction?
Subscribe to our Free Email Newsletter
Do you have a sports website? Or write about sports? We have tools and resources that can help you use sports data. Find out more.