我的MySQL数据库中的一个表跟踪游戏。它具有以下结构:
SCENARIO_VICTORIES
[ID] [scenario_id] [game] [timestamp] [user_id] [winning_side] [play_date]
ID
是自动增量主键。 timestamp
记录提交记录的时刻。 winning_side
具有三个可能值之一:1,2或0(表示平局)
此表上执行的一个查询计算每个方案的胜利百分比,查看该方案的页面时。输出表示为:
并询问:
SELECT winning_side, COUNT(scenario_id)
FROM scenario_victories WHERE scenario_id='$scenID'
GROUP BY winning_side ORDER BY winning_side ASC
然后处理成百分比等。
很抱歉,设置时间过长。 我的问题是:我的几个用户互相玩耍,并记录他们的相互结果。所以这些战斗在胜利百分比和结果数量上都有双重代表。虽然这种情况很少发生,但用户群并不大,而且双重条目对数据有明显的影响。
鉴于上面的表格和查询 - 是否有人对我如何“折叠”具有相同play_date & game & scenario_id & winning_side
的记录有任何建议,以便它们只被计算一次?
答案 0 :(得分:1)
这有点晚了,但理想情况下,当你插入这些副本时你会过滤掉它们。
那就是说,你应该能够像DISTINCT
一样进行SELECT winning_side, COUNT(scenario_id)
FROM (
SELECT DISTINCT play_date, game, scenario_id, winning_side
FROM scenario_victories
WHERE scenario_id = '$scenID'
)
GROUP BY winning_side ORDER BY winning_side ASC
内部查询:
{{1}}