1.6.3: fixed opponent total.

This commit is contained in:
2026-01-27 19:29:08 +08:00
parent e019d3e458
commit 5693eb84ee

View File

@@ -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
"""