使用MySQL,我试图从给定列表中所有团队的列表中获取仅列出并列(具有相同数量的胜利)的团队的列表。要计算每个团队的胜利,我在按团队分组时使用SUM功能。
到目前为止,我已创建此查询:
SELECT results.DATE,
results.team1,
SUM(results.win) AS WINS,
SUM(results.lose) AS LOSSES,
SUM(results.pt_diff) AS PT_DIFF,
event_team.div_sname,
event_team.pool_name
FROM results,
event_team,
matches
WHERE results.team1 = event_team.team_id
AND results.sched_id = matches.sched_id
AND matches.match_type = 'pool'
AND event_team.div_sname = 'C4A'
AND event_team.pool_name = 'Pool_C4A_1'
AND event_team.event_id = 25
GROUP BY results.team1
ORDER BY event_team.pool_name, wins DESC, losses ASC, PT_DIFF DESC
此查询返回整个团队列表及其
DATE team1 WINS LOSSES PT_DIFF div_sname pool_name
---------- ------ ------ ------ ------- --------- ------------
2014-09-06 54 9 3 28 C4A Pool_C4A_1
2014-09-06 62 6 6 -2 C4A Pool_C4A_1
2014-09-06 55 5 7 1 C4A Pool_C4A_1
2014-09-06 59 5 7 -7 C4A Pool_C4A_1
2014-09-06 65 5 7 -20 C4A Pool_C4A_1
如何消除上面例子中的前两行,这样我才能获得55,59和65个队伍,每个队伍各得5胜?请注意,我的整体结果中可能存在多重联系,因此任何解决方案都必须捕获所有具有联系的团队,即使这些团队之间的胜利不同。
我已经尝试了以下但是在进一步阅读后,似乎我不能通过聚合函数GROUP BY。我怎么能接近这个呢?
SELECT results.DATE,
results.team1,
SUM(results.win) AS WINS,
event_team.div_sname,
event_team.pool_name
FROM results,
event_team,
matches
WHERE results.team1 = event_team.team_id
AND results.sched_id = matches.sched_id
AND matches.match_type = 'pool'
AND event_team.div_sname = 'C4A'
AND event_team.pool_name = 'Pool_C4A_1'
AND event_team.event_id = 25
GROUP BY WINS
HAVING COUNT(WINS) >1
提前感谢所有回复!
答案 0 :(得分:0)
这是一个解决方案:
SELECT
results.DATE,
results.team1,
results.win,
event_team.div_sname,
event_team.pool_name
FROM results,
event_team,
matches
WHERE results.team1 = event_team.team_id
AND results.sched_id = matches.sched_id
AND matches.match_type = 'pool'
AND event_team.div_sname = 'C4A'
AND event_team.pool_name = 'Pool_C4A_1'
AND event_team.event_id = 25
AND results.win IN (SELECT results.win FROM results GROUP BY results.win HAVING COUNT(*)>1)
这将为您提供如下所示的结果集:
+------------+-------+-----+-----------+------------+
| DATE | team1 | win | div_sname | pool_name |
+------------+-------+-----+-----------+------------+
| 2014-09-06 | 55 | 5 | C4A | Pool_C4A_1 |
| 2014-09-06 | 59 | 5 | C4A | Pool_C4A_1 |
| 2014-09-06 | 65 | 5 | C4A | Pool_C4A_1 |
+------------+-------+-----+-----------+------------+
该子查询只选择所有获胜次数,其中有多行具有该获胜次数。