我有一张包含以下数据的表格
我想要状态为C的每个集合的第二高开始日期。 例如 答案应该是
2015-05-01
2 2015-05-01
3 2015-06-01
在bigquery中有更简单的方法吗?
答案 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'