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

如何在BigQuery中按分组获取最大值对应的记录?

解决方案:按分组提取最大值对应完整记录

针对你遇到的问题——按Column A分组后,无法获取Column C最大值对应的Column B值,这里提供两种简洁优雅的方案:

方案一:使用窗口函数(推荐,现代SQL数据库适用)

如果你的数据库支持窗口函数(如MySQL 8.0+、PostgreSQL、SQL Server、Oracle等),这是最简洁高效的方式:

SELECT ColumnA, ColumnB, ColumnC
FROM (
    SELECT 
        ColumnA, ColumnB, ColumnC,
        -- 按ColumnA分组,每组内按ColumnC降序编号
        ROW_NUMBER() OVER (PARTITION BY ColumnA ORDER BY ColumnC DESC) AS row_num
    FROM your_table_name
) ranked_data
WHERE row_num = 1;

说明:

  • PARTITION BY ColumnA:将数据按Column A分组
  • ORDER BY ColumnC DESC:每组内按Column C从大到小排序,确保最大值排在第一位
  • ROW_NUMBER():给每组内的行分配唯一编号,最大值对应的行编号为1
  • 若同一组存在多条Column C等于最大值的记录,ROW_NUMBER()会随机保留一条;如果需要保留所有最大值记录,可替换为RANK()或DENSE_RANK()

方案二:子查询关联(兼容旧版本数据库)

如果你的数据库不支持窗口函数(如MySQL 5.x),可以用子查询+关联的方式实现:

SELECT t1.ColumnA, t1.ColumnB, t1.ColumnC
FROM your_table_name t1
INNER JOIN (
    -- 先获取每组ColumnA对应的最大ColumnC值
    SELECT ColumnA, MAX(ColumnC) AS max_colc
    FROM your_table_name
    GROUP BY ColumnA
) t2 
ON t1.ColumnA = t2.ColumnA AND t1.ColumnC = t2.max_colc;

说明:

  • 子查询先计算出每个Column A分组对应的Column C最大值
  • 再通过INNER JOIN将原表与子查询结果关联,匹配Column A和Column C等于最大值的记录,从而获取对应的Column B
  • 此方法会返回同一组内所有Column C等于最大值的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:20:23