表格: 请在此处查看以查看表格。 How to query counting specific wins of team and find the winner of the series如何在左连接中使用子查询时优化查询
问题:
- 如何让更多的查询优化?
- 如何减少查询冗余?
- 如何使此查询更快?
摘要
正如你可以在这个查询例子这一部分是多次使用看看。
WHERE leagueid = 2096
AND start_time >= 1415938900
AND ((matches.radiant_team_id= 1848158 AND matches.dire_team_id= 15)
OR (matches.radiant_team_id= 15 AND matches.dire_team_id= 1848158))
SELECT matches.radiant_team_id,
matches.dire_team_id,
matches.radiant_name,
matches.dire_name,
TA.Count AS teamA,
TB.Count AS teamB,
TA.Count + TB.Count AS total_matches,
SUM(TA.wins),
SUM(TB.wins),
(CASE
WHEN series_type = 0 THEN 1
WHEN series_type = 1 THEN 2
WHEN series_type = 2 THEN 3
END) AS wins_goal
FROM matches
LEFT JOIN
(SELECT radiant_team_id,
COUNT(id) AS COUNT,
CASE
WHEN matches.radiant_team_id = radiant_team_id && radiant_win = 1 THEN 1
END AS wins
FROM matches
WHERE leagueid = 2096
AND start_time >= 1415938900
AND ((matches.radiant_team_id= 1848158
AND matches.dire_team_id= 15)
OR (matches.radiant_team_id= 15
AND matches.dire_team_id= 1848158))
GROUP BY radiant_team_id) AS TA ON TA.radiant_team_id = matches.radiant_team_id
LEFT JOIN
(SELECT dire_team_id,
COUNT(id) AS COUNT,
CASE
WHEN matches.dire_team_id = dire_team_id && radiant_win = 0 THEN 1
END AS wins
FROM matches
WHERE leagueid = 2096
AND start_time >= 1415938900
AND ((matches.radiant_team_id= 1848158
AND matches.dire_team_id= 15)
OR (matches.radiant_team_id= 15
AND matches.dire_team_id= 1848158))
GROUP BY dire_team_id) AS TB ON TB.dire_team_id = matches.dire_team_id
WHERE leagueid = 2096
AND start_time >= 1415938900
AND ((matches.radiant_team_id= 1848158
AND matches.dire_team_id= 15)
OR (matches.radiant_team_id= 15
AND matches.dire_team_id= 1848158))
GROUP BY series_id
计划匹配
ID| leagueid| team_a_id| team_b_id| starttime
1| 2096| 1848158| 15| 1415938900
WOOOOOOOOOOH。而已。你是最好的。非常感谢你 。这个问题是1周老〜〜/〜然后在最后。你解决了它:D非常感谢! – ronscript 2014-11-24 00:55:07
我有问题。如果我想使radiant_team_id和dire_team_id动态,该怎么办?例如我不想过滤出使用团队ID。 – ronscript 2014-11-24 01:16:29
这取决于。一系列确定了一个独特的团队对?或者它确实解决了可以应用于多个团队对的阶段?除此之外,您需要考虑模型层面有多少逻辑,以及可以使用业务逻辑来管理多少逻辑。 – amenadiel 2014-11-24 01:23:10