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

在BigQuery SQL中实现列排序与逐位比较的技术方案咨询

BigQuery 实现方案

核心思路

因为无法直接获取中间值,我们可以通过总和减去最大最小值得到中间值,再分别对A、B组的三个值排序后逐位比较,最终判断是否全部满足A<B的条件。这种行级计算逻辑高效,适配大数据量场景。

具体SQL实现

SELECT
  *,
  -- 计算A组排序后的三个值:最小、中间、最大
  LEAST(A_Length, A_breadth, A_Width) AS A_min,
  (A_Length + A_breadth + A_Width) - LEAST(A_Length, A_breadth, A_Width) - GREATEST(A_Length, A_breadth, A_Width) AS A_mid,
  GREATEST(A_Length, A_breadth, A_Width) AS A_max,
  -- 计算B组排序后的三个值:最小、中间、最大
  LEAST(B_length, B_breadth, B_width) AS B_min,
  (B_length + B_breadth + B_width) - LEAST(B_length, B_breadth, B_width) - GREATEST(B_length, B_breadth, B_width) AS B_mid,
  GREATEST(B_length, B_breadth, B_width) AS B_max,
  -- 判断三次比较是否全为True
  (LEAST(A_Length, A_breadth, A_Width) < LEAST(B_length, B_breadth, B_width))
  AND ((A_Length + A_breadth + A_Width) - LEAST(A_Length, A_breadth, A_Width) - GREATEST(A_Length, A_breadth, A_Width) < (B_length + B_breadth + B_width) - LEAST(B_length, B_breadth, B_width) - GREATEST(B_length, B_breadth, B_width))
  AND (GREATEST(A_Length, A_breadth, A_Width) < GREATEST(B_length, B_breadth, B_width)) AS is_all_less
FROM
  `你的项目名.数据集名.表名`

关键说明

  • 中间值计算:三个数值的总和减去最小值和最大值,剩余结果即为中间值,无需额外聚合或窗口函数,计算成本极低。
  • 结果判断:用AND串联三次比较逻辑,只有三次比较均返回True时,is_all_less字段才会输出True,否则为False。
  • 性能适配:全程为行级运算,不会触发数据shuffle,在大数据量场景下仍能保持高效执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:10:20