【发布时间】:2014-10-28 13:32:07
【问题描述】:
通过一个例子最简单的解释。
父亲的孩子在比赛中获胜。
有多少父亲的后代赢得了一场比赛,以及父亲的后代总共赢得了多少场比赛。 (胜利者和胜利者)
我可以很容易地计算出获胜的总数,但有时一个孩子会赢得不止一场比赛,所以要计算出获胜者,我只需要计算孩子获胜的总和,而不是它获胜的所有次数。
在下面的查询摘录中,我不能使用 Distinct,所以这不起作用
SUM(CASE WHEN r.finish = '1' AND DISTINCT h.runnersid THEN 1 ELSE 0 END ) AS winners,
这也行不通
SUM(SELECT DISTINCT r.runnersid FROM runs r WHERE r.finish='1') AS winners
当我需要找到总获胜次数时,这很有效。
SUM(CASE WHEN r.finish = '1' THEN 1 ELSE 0 END ) AS wins,
这是一个 sqlfiddle http://sqlfiddle.com/#!2/e9a81/1
【问题讨论】:
-
如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
-
@strawberry 感谢我添加小提琴的建议。
-
这个问题读起来其实很有趣:)
-
我也遇到过类似的情况,这对我帮助很大:stackoverflow.com/questions/14048098/…