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

NTH_VALUE 取第 N 行值

取窗口帧内第 N 行的值:例如组内第二早的订单时间;N 超出帧范围时返回 NULL。

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

示例

示例
SELECT user_id, created_at,
       NTH_VALUE(created_at, 2) OVER (
           PARTITION BY user_id
           ORDER BY created_at
           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
       ) AS second_order_at
FROM orders;
语法NTH_VALUE(expr, n)
帧建议显式写完整帧,否则受默认帧限制
超出返回 NULL

易错点

  • 默认帧下 N 大于当前行号时取不到值,先想清楚要“分区第 N 行”还是“到当前行为止的第 N 行”
  • 分区的排序必须确定,否则第 N 行是谁不稳定

数据来源与参考

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