最簡單的解釋通過一個例子。具有唯一ID的Mysql SUM CASE只有
父親有孩子誰贏得比賽。
有多少個父親獲得了一場比賽,總共有多少個種族獲得了一個父親的後代。 (贏家和勝利)
我可以很容易地計算出勝利的總數,但有時候孩子會贏得多於一場比賽,所以要想出勝者,我只需要在孩子贏得勝利的情況下取得勝利,而不是所有勝利時間。
在從查詢我不能使用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 2014-10-28 13:33:20
@strawberry感謝您提供的建議我已添加小提琴。 – stemie 2014-10-29 07:07:16
這個問題其實挺好玩的:) – Adam 2016-11-23 22:14:08