在大查询中查找一组set_id的第二个最大start_date

时间:2015-06-29 21:44:27

标签: google-bigquery

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

enter image description here

我想要状态为C的每个集合的第二高开始日期。 例如 答案应该是

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

在bigquery中有更简单的方法吗?

1 个答案:

答案 0 :(得分:3)

首先过滤只有状态=' 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'