我已經成功地使這個工作,但需要幫助改善查詢並優化它獲取更多的參數。計算最長連勝/連敗的用戶
查詢將計算出的最長連勝輸贏的遊戲,到目前爲止,我已經成功地使這種通過獲取勝利的工作,失去作爲單獨的查詢的。但我想一次拿到他們。我怎麼能作出這樣的工作,進一步建立在此查詢(此人會計算最長連勝):
SELECT MIN(c.ID) - a.ID + 1 as Streak
FROM games AS a
LEFT JOIN games AS b ON a.ID = b.id + 1 AND b.P1Outcome= 'win'
LEFT JOIN games AS c ON a.ID <= c.id AND c.P1Outcome= 'win'
LEFT JOIN games AS d ON c.ID = d.id - 1 AND d.P1Outcome= 'win'
WHERE
a.UsrID = x
AND a.P1Outcome= 'win'
AND b.ID IS NULL
AND c.ID IS NOT NULL
AND d.ID IS NULL
GROUP BY a.ID
ORDER BY Streak
ID =每場比賽
P1Outcome主鍵=上的用戶結果遊戲
UsrID =該用戶ID
首先,不可能有任何改進,如果可能的話可以把它也同時獲取失去連勝?感謝您的時間。
創建表和樣本數據將有助於...我不認爲這個查詢應該工作 - b.ID爲null並且d.ID是無效條款應引起它炸燬,和你沒有參加上任何地方UsrID .. – 2011-05-09 11:13:49
你也許可以使用用戶變量來這更有效地完成。見http://stackoverflow.com/questions/3755590/sql-how-to-select-the-record-with-the-most-recent-past-date-for-every-record-on/3755688#3755688(@ !安德烈 - 幾秒打我類似的評論那裏) – 2011-05-09 12:16:50
@馬丁:哈哈,當我和我的英語掙扎,你把你的時間更有效率,並最終能夠拿出更多的東西比物質感嘆我。謝謝,我現在可以刪除我的幫助中的悲慘嘗試。 :) – 2011-05-09 12:28:28