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;