SQL,使用滞后计算行间数据
SQL, Calculate Data Between Rows Using Lag
我有一个 Play table,它有专栏和时钟。我想 return 拥有 'away' 的所有比赛,并计算上一场比赛和所选比赛之间经过的时间。问题是,使用我的查询,滞后函数正在计算一组只有 'away' 拥有球权的比赛而不是一组所有比赛的经过时间。
select (lag(clock, 1) over () - clock) from plays where possession = 'away';
如何使滞后(时钟,1)指的是所有比赛的集合,而不仅仅是那些拥有 = 'away' 的比赛?
我想你只是想要一个子查询:
select p.*
from (select p.*, (lag(clock, 1) over () - clock) as diff
from plays p
) p
where possession = 'away';
我有一个 Play table,它有专栏和时钟。我想 return 拥有 'away' 的所有比赛,并计算上一场比赛和所选比赛之间经过的时间。问题是,使用我的查询,滞后函数正在计算一组只有 'away' 拥有球权的比赛而不是一组所有比赛的经过时间。
select (lag(clock, 1) over () - clock) from plays where possession = 'away';
如何使滞后(时钟,1)指的是所有比赛的集合,而不仅仅是那些拥有 = 'away' 的比赛?
我想你只是想要一个子查询:
select p.*
from (select p.*, (lag(clock, 1) over () - clock) as diff
from plays p
) p
where possession = 'away';