Compare a row against all earlier rows only.

Section: OVER clause fundamentals

Exclude the current row from a frame

sql
sql
SELECT created_at,
       amount,
       AVG(amount) OVER (
         ORDER BY created_at
         ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
       ) AS avg_before_current
FROM orders;
Explanation

This pattern is useful when you need a historical benchmark without including the current row in the average.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing OVER clause fundamentals
Explicit ROWS frame
Define exactly which physical rows are included.
OpenIn sheetsqlsame section
Count all rows without collapsing them
Return total row count on every row.
OpenIn sheetsqlsame section
Aggregate within a partition
Compute a per-customer total on every row.
OpenIn sheetsqlsame section
Assign row numbers inside each partition
Number rows in order within each customer.
OpenIn sheetsqlsame section
Reuse a named window
Avoid repeating a long window definition.
OpenIn sheetsqlsame section
Use RANGE for peer-aware frames
Group rows that share the same ordering value.
OpenIn sheetsqlsame section