在大查询中查找一组 set_id 的第二个最大开始日期

KRS*_*KRS 4 google-bigquery

我有一张包含如下数据的表格

在此输入图像描述

我想要每组的第二个最高开始日期,其中状态为 C。例如,答案应该是

1 2015-05-01
2 2015-05-01
3 2015-06-01

在 bigquery 中是否有更简单的方法来执行此操作?

Mos*_*sky 5

首先仅过滤 status = 'C' 的记录,然后使用窗口函数按 set_id 对数据进行分区,并按每个集合内的 start_date 进行排序。然后取第二个值。

SELECT 
  set_id, 
  NTH_VALUE(start_date, 2) OVER(PARTITION BY set_id ORDER BY start_date DESC)
FROM table WHERE status = 'C'
Run Code Online (Sandbox Code Playgroud)