BigQuery中与PostgreSQL的DISTINCT ON等价的语法是什么?
BigQuery替代PostgreSQL
DISTINCT ON的无CTE方案 BigQuery没有直接对应DISTINCT ON的语法,但可以用QUALIFY结合窗口函数实现完全相同的效果,而且不需要嵌套CTE或子查询,写法更简洁。
针对你给出的PostgreSQL示例,对应的BigQuery查询如下:
SELECT user_id, updated_on, net_change FROM table_name QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY updated_on DESC) = 1 ORDER BY user_id, updated_on DESC
说明:
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY updated_on DESC):按user_id分组,每组内按updated_on倒序给行编号,最新的行编号为1QUALIFY:BigQuery专属语法,用来筛选窗口函数计算后的结果,只保留编号为1的行,也就是每个user_id对应的最新记录- 最后的
ORDER BY可以保留,和原PostgreSQL查询的排序逻辑一致,也可以根据需求去掉
内容的提问来源于stack exchange,提问作者François Leblanc
相关产品推荐
相关产品推荐

