Carry the earliest value across all rows in the partition.

Section: Positional functions

Get the first value in each partition

sql
sql
SELECT customer_id,
       order_date,
       amount,
       FIRST_VALUE(amount) OVER (
         PARTITION BY customer_id
         ORDER BY order_date
         ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
       ) AS first_order_amount
FROM orders;
Explanation

Using the full-partition frame makes intent explicit and avoids surprises.

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 Positional functions
Get the true last value in each partition
Use an explicit full frame with LAST_VALUE.
OpenIn sheetsqlsame section
Get the second value in each partition
Pull a specific positional value.
OpenIn sheetsqlsame section
Delta from first value
Compare each row to the partition's first value.
OpenIn sheetsql1 tag match
Compare current value to final partition value
Measure remaining distance to the last value.