diff --git a/web/services/opponent_service.py b/web/services/opponent_service.py index 3549917..efae06b 100644 --- a/web/services/opponent_service.py +++ b/web/services/opponent_service.py @@ -253,10 +253,34 @@ class OpponentService: # Using fact_match_players_t / ct sql_side = """ SELECT - (SELECT SUM(t.rating * t.round_total) / SUM(t.round_total) FROM fact_match_players_t t WHERE t.steam_id_64 = ?) as rating_t, - (SELECT SUM(ct.rating * ct.round_total) / SUM(ct.round_total) FROM fact_match_players_ct ct WHERE ct.steam_id_64 = ?) as rating_ct, - (SELECT SUM(t.kd_ratio * t.round_total) / SUM(t.round_total) FROM fact_match_players_t t WHERE t.steam_id_64 = ?) as kd_t, - (SELECT SUM(ct.kd_ratio * ct.round_total) / SUM(ct.round_total) FROM fact_match_players_ct ct WHERE ct.steam_id_64 = ?) as kd_ct, + (SELECT CASE + WHEN SUM(CASE WHEN t.rating2 IS NOT NULL AND t.rating2 != 0 THEN t.round_total END) > 0 + THEN SUM(CASE WHEN t.rating2 IS NOT NULL AND t.rating2 != 0 THEN t.rating2 * t.round_total END) + / SUM(CASE WHEN t.rating2 IS NOT NULL AND t.rating2 != 0 THEN t.round_total END) + WHEN COUNT(*) > 0 + THEN AVG(NULLIF(t.rating2, 0)) + END + FROM fact_match_players_t t WHERE t.steam_id_64 = ?) as rating_t, + (SELECT CASE + WHEN SUM(CASE WHEN ct.rating2 IS NOT NULL AND ct.rating2 != 0 THEN ct.round_total END) > 0 + THEN SUM(CASE WHEN ct.rating2 IS NOT NULL AND ct.rating2 != 0 THEN ct.rating2 * ct.round_total END) + / SUM(CASE WHEN ct.rating2 IS NOT NULL AND ct.rating2 != 0 THEN ct.round_total END) + WHEN COUNT(*) > 0 + THEN AVG(NULLIF(ct.rating2, 0)) + END + FROM fact_match_players_ct ct WHERE ct.steam_id_64 = ?) as rating_ct, + (SELECT CASE + WHEN SUM(t.deaths) > 0 THEN SUM(t.kills) * 1.0 / SUM(t.deaths) + WHEN SUM(t.kills) > 0 THEN SUM(t.kills) * 1.0 + WHEN COUNT(*) > 0 THEN AVG(NULLIF(t.kd_ratio, 0)) + END + FROM fact_match_players_t t WHERE t.steam_id_64 = ?) as kd_t, + (SELECT CASE + WHEN SUM(ct.deaths) > 0 THEN SUM(ct.kills) * 1.0 / SUM(ct.deaths) + WHEN SUM(ct.kills) > 0 THEN SUM(ct.kills) * 1.0 + WHEN COUNT(*) > 0 THEN AVG(NULLIF(ct.kd_ratio, 0)) + END + FROM fact_match_players_ct ct WHERE ct.steam_id_64 = ?) as kd_ct, (SELECT SUM(t.round_total) FROM fact_match_players_t t WHERE t.steam_id_64 = ?) as rounds_t, (SELECT SUM(ct.round_total) FROM fact_match_players_ct ct WHERE ct.steam_id_64 = ?) as rounds_ct """