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

在BigQuery Standard SQL中如何查询分组后指定字段值全相同的记录

BigQuery Standard SQL 实现方案

核心逻辑为按A、B字段分组后,判断分组内C字段的所有取值是否一致,有两种常用实现方式:

方式1:去重计数判断(写法简单直观)

SELECT
  A,
  B,
  ANY_VALUE(C) AS C -- 分组内C取值完全一致,可取任意一条的C值
FROM
  `你的项目ID.你的数据集名.你的表名`
GROUP BY
  A, B
HAVING
  COUNT(DISTINCT C) = 1

方式2:极值比对判断(大数据量下性能更优)

无需执行去重计数,仅通过比对分组内C的最小值和最大值即可判断取值是否一致,执行效率更高:

SELECT
  A,
  B,
  MIN(C) AS C -- 也可替换为MAX(C),结果完全一致
FROM
  `你的项目ID.你的数据集名.你的表名`
GROUP BY
  A, B
HAVING
  MIN(C) = MAX(C)

特殊场景补充

如果需要将分组内C全为NULL的场景也纳入返回结果,需调整HAVING条件处理NULL值比对逻辑:

HAVING
  MIN(C) = MAX(C) 
  OR (MIN(C) IS NULL AND MAX(C) IS NULL)

如需返回分组内所有明细行

如果不需要聚合,仅需要过滤出符合条件的分组下的全部原始数据,可使用窗口函数实现:

SELECT
  A,
  B,
  C
FROM (
  SELECT
    *,
    MIN(C) OVER(PARTITION BY A, B) AS min_c,
    MAX(C) OVER(PARTITION BY A, B) AS max_c
  FROM
    `你的项目ID.你的数据集名.你的表名`
)
WHERE
  min_c = max_c
  OR (min_c IS NULL AND max_c IS NULL) -- 同样按需添加全NULL场景的判断

内容的提问来源于stack exchange,提问作者Davout

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:45:01