Как запросить определенные значения в сиквеле про?

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

У меня есть данные от пользователей приложения, которые играли в определенную игру (значение которой в нашей базе данных равно 32. Они могут играть несколько раз. Я выбираю COUNT(gamescore.Score), чтобы узнать, сколько раз они играли в игру, и новый счет будет записываться каждый раз, когда они играют.Теперь я хочу знать, каков был их счет в 3-й игре по времени, если они играли несколько раз.

Я приложил изображение для лучшего объяснения. Человек с UserID 18211 играл в игру "32" несколько раз, и его результаты показаны в первом столбце. Я хочу знать, каков был счет, когда они играли в игру в третий раз. Итак, взглянув на таблицу, я знаю, что этот счет равен 109, когда они играли в третий раз, 9 сентября 2016 года. Но я должен сделать это для многих пользователей, поэтому я не могу просмотреть их всех вручную.

Вот код:

SELECT DISTINCT gamescore.UserID, COUNT(gamescore.Score), gamescore.GameId
FROM gamescore
WHERE gamescore.GameID = "32"
GROUP BY gamescore.UserID

Я не знаю, как изменить запрос, чтобы получить счет в третий раз, когда они играли... Кто-нибудь может помочь?

Пример данных: введите здесь описание изображения

Спасибо


person Maheen Siddiqui    schedule 27.01.2017    source источник
comment
что вы имеете в виду под счетом 3-й игры .. обновите свой вопрос, добавив правильный образец данных и ожидаемый результат, пожалуйста   -  person scaisEdge    schedule 27.01.2017
comment
@scaisEdge Я добавил дополнительную информацию и пример изображения .. надеюсь, теперь стало понятнее, что мне нужно.   -  person Maheen Siddiqui    schedule 27.01.2017
comment
Google 'sql (квота ИЛИ окно) запрос (третий или n-й ИЛИ n-й)'. PS Пожалуйста, избегайте изображений, таблицы можно вырезать и вставить в блок кода.   -  person philipxy    schedule 27.01.2017


Ответы (1)


для счета 3-й игры вы можете использовать ограничение на заказ по выбору, например:

   select t.UserID , t.Score, t.dateCreated, t.GameId from (
          select UserID, Score, dateCreated, GameId 
          from gamescore
          WHERE GameID = '32'
          and UserId = 18211
          order by  dateCreated  limit 3 
          ) t 
    order by dateCreated limit 1 desc 

но для получения этого результата для всех UserId вы должны выполнить итерацию на стороне сервера в своем списке UserId и повторить выбор для каждого пользователя.

person scaisEdge    schedule 27.01.2017
comment
Я получаю эту ошибку, когда запускаю это: [ОШИБКА в запросе 2] У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «asc ) order by dateCreated limit 1 desc» в строке 6 - person Maheen Siddiqui; 27.01.2017
comment
Ответ @MaheenSiddiqui обновлен (отсутствует t для имени таблицы) - person scaisEdge; 27.01.2017
comment
@MaheenSiddiqui .. я обновил ответ слегка измененной версией, надеюсь, это сработает - person scaisEdge; 27.01.2017
comment
@MaheenSiddiqui Итерация не предназначена для выполнения такого рода запросов. - person philipxy; 27.01.2017