SELECT strftime('%Y', game.date) AS year, -- Extracts year from date team.id AS team_id, team.name AS team_name, SUM(CASE WHEN gameresult.home_outcome = 'WIN' AND game.home_team_id = team.id OR gameresult.visitor_outcome = 'WIN' AND game.visitor_team_id = team.id THEN 1 ELSE 0 END) AS wins, SUM(CASE WHEN gameresult.home_outcome = 'LOSS' AND game.home_team_id = team.id OR gameresult.visitor_outcome = 'LOSS' AND game.visitor_team_id = team.id THEN 1 ELSE 0 END) AS losses, SUM(CASE WHEN gameresult.home_outcome = 'TIE' AND game.home_team_id = team.id OR gameresult.visitor_outcome = 'TIE' AND game.visitor_team_id = team.id THEN 1 ELSE 0 END) AS ties FROM team LEFT JOIN game ON (game.home_team_id = team.id OR game.visitor_team_id = team.id) LEFT JOIN gameresult ON game.id = gameresult.game_id GROUP BY year, team.id ORDER BY year, wins DESC, losses ASC, ties DESC;