You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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倒序给行编号,最新的行编号为1
  • QUALIFY:BigQuery专属语法,用来筛选窗口函数计算后的结果,只保留编号为1的行,也就是每个user_id对应的最新记录
  • 最后的ORDER BY可以保留,和原PostgreSQL查询的排序逻辑一致,也可以根据需求去掉

内容的提问来源于stack exchange,提问作者François Leblanc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:48:15