Я застрял в запросе SQL.
Рассмотрим следующую таблицу:
Table DG_GAME_ROUNDS
RoundId int
GameId int
RoundNumber int
Value varchar(20)
Guess varchar(20)
Answer varchar(20)
Correct bit
Minutes int
Seconds int
Milliseconds int
Эта таблица содержит результаты игровых раундов.Теперь иногда вы можете дать полный ответ на игру и получить время угадывания 35 или даже 0 миллисекунд.Эти ответы искажают результаты моей игры, и я хочу их удалить.
Я хочу выяснить среднее время угадывания, когда предположение длится не менее 200 миллисекунд.Так что, если в игре было пять раундов с угаданиями 455, 400, 340, 30, 300. Я хочу игнорировать 30 и усреднить оставшиеся четыре значения и получить среднее время угадывания 374. Без отбрасывания 30 среднее время угадываниябыло бы 305.
Моя проблема в том, что я пытаюсь объединить два подзапроса, и я получаю сообщение об ошибке, что существует проблема вокруг оператора "on".Я думаю, что присоединение к подзапросам разрешено.
select vt.gameid, vt.totalms, vt.numofguesses, vt.correctguesses
from
(select gr.gameid
, sum((gr.seconds*1000) + gr.milliseconds) as totalms
, count(gr.roundid) as numofguesses
, sum(cast(gr.correct as int)) as correctguesses
from work_tables.dbo.dg_game_rounds gr (nolock)
group by gr.gameid
) vt
inner join (
select vtIII.gameid, vtIII.avgtime
from
(
select vtII.gameid, sum(vtII.avgms)/count(vtII.avgms) as avgtime
from (
select gr.gameid, gr.seconds * 1000 + gr.milliseconds as avgms
from dg_game_rounds gr (nolock)
where gr.seconds * 1000 + gr.milliseconds > 200
) vtII
group by vtII.gameid
) vtIII
on vtIII.gameid = vt.gameid