首页/数据/SQL 速查/FIRST_VALUE 组内首值
本包目录(311 条)
查询基础33 条连接与子查询40 条
聚合与窗口函数54 条
函数速查60 条变更与事务52 条性能与执行计划72 条

FIRST_VALUE 组内首值

取窗口帧内首行的值:把“组内最早/排在首位”的字段广播到每一行,用于对比与填充。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT user_id, created_at,
       FIRST_VALUE(created_at) OVER (
           PARTITION BY user_id ORDER BY created_at
       ) AS first_order_at
FROM orders;
帧默认从分区起点到当前行,首值即分区首行
用途首单时间、初始状态对比
注意与 LAST_VALUE 的默认帧差异很大

易错点

  • 帧范围改变会改变“首值”:加了 ROWS 限制后取的是帧首行而非分区首行
  • 排序并列时首行不确定,补次级排序键

数据来源与参考

  • MySQL 8.0 Reference Manual · FIRST_VALUE
  • PostgreSQL Documentation · Window Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌