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

BigQuery中如何获取指定行下方首个type为T的count值?

解决BigQuery中V类型行取下方首个T类型行count值的问题

问题分析

你当前的FIRST_VALUE写法错误在于排序逻辑:把所有type=T的行强制排在前面,导致返回的是整个分区内最早出现的T类型行count,而非当前行下方的首个T类型行count。

正确SQL写法

SELECT
  group_id,
  person_id,
  type,
  position,
  count,
  FIRST_VALUE(CASE WHEN type = 'T' THEN count ELSE NULL END) OVER (
    PARTITION BY group_id, person_id
    ORDER BY position ASC
    ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
  ) AS new_count
FROM
  `your-project.your-dataset.your-table`;

逻辑说明

  1. 分区与排序:按group_id和person_id分区,确保只在同一组内查找;按position升序排列,保证行顺序是从上到下的原始顺序。
  2. 过滤有效值:用CASE WHEN将非T类型行的count转为NULL,这样FIRST_VALUE会自动跳过这些NULL值,找到当前行到末尾范围内第一个非NULL的count值(即下方首个T类型行的count)。
  3. T类型行处理:T类型行的CASE会返回自身的count,因此new_count与原count一致,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:40:18