Sliding window 滑动窗口

ROWS BETWEEN  AND 

PRECEDING: before current row
FOLLOWING: after current row
UNBOUNDED PRECEDING: every row since the beginning
UNBOUNDED FOLLOWING: every rows until the end
CURRENT ROW

例子1

/* Manchester City Home Games */
SELECT date,
       home_goal,
       away_goal,
       SUM(home_goal) 
          OVER(ORDER BY date 
          ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total
FROM match
WHERE hometeam_id = 8456 AND season = '2011/2012';

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
从最早的一条数据,一直到当前的数据
Sliding window 滑动窗口_第1张图片

例子2

/* Manchester City Home Games */
SELECT date,
       home_goal,
       away_goal,
       SUM(home_goal) 
          OVER(ORDER BY date 
          ROWS BETWEEN 1 PRECEDING 
          AND CURRENT ROW) AS last2
FROM match
WHERE hometeam_id = 8456
      AND season = '2011/2012';

ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
从当前数据的前一条,一直到当前数据
Sliding window 滑动窗口_第2张图片

例子3

SELECT 
	-- Select the date, home goal, and away goals
	date,
    home_goal,
    away_goal,
    -- Create a running total and running average of home goals
    SUM (home_goal) OVER(ORDER BY date DESC
         ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS running_total,
    AVG(home_goal) OVER(ORDER BY date DESC
         ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS running_avg
FROM match
WHERE 
	awayteam_id = 9908 
    AND season = '2011/2012';

ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
反方向,需要从current row开始算起

你可能感兴趣的:(SQL)