Рассчитайте самую длинную полосу выигрыша / проигрыша для пользователя - PullRequest
3 голосов
/ 09 мая 2011

Мне уже удалось заставить это работать, но мне нужна помощь по улучшению запроса и оптимизации его для получения большего количества параметров.

Запрос вычислит самую длинную серию для победы и поражения в игре и до сих порМне удалось заставить это работать, выбирая выигрыш и проигрыш как отдельный запрос.Но я хотел бы получить их обоих сразу.Как я могу заставить это работать, основываясь на этом запросе (этот рассчитает самую длинную серию побед):

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 = идентификатор пользователя

Прежде всего, могут ли быть какие-либо улучшения, и если это возможно, можно ли одновременно получить полосу проигрышей?Спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...