如何对比多列数值并返回最大值对应的列名?
解决多列数值对比,返回最大值对应列名的方法
核心思路是把列名和对应数值绑定成键值对结构,这样在排序或筛选最大值时,不会丢失列名与数值的对应关系——这也是你之前用array_sort_asc()没成功的原因:单纯排序数值会剥离掉列名信息。
针对不同工具的具体实现示例
1. SQL(以BigQuery为例)
先构造包含列名和数值的结构体数组,再展开数组并按数值降序排序,取第一个元素的列名:
WITH sample_data AS ( SELECT 3 AS `Application 1`, 20 AS `Application 2`, 1 AS `Application 3` ) SELECT -- 构造键值对数组,将每列的列名和数值一一对应 (SELECT key FROM UNNEST(ARRAY<STRUCT<key STRING, value INT64>>[ ("Application 1", `Application 1`), ("Application 2", `Application 2`), ("Application 3", `Application 3`) ]) ORDER BY value DESC LIMIT 1) AS max_column_name FROM sample_data
如果是10列的情况,只需要在数组中继续追加对应的("列名", 列值)结构体即可。
2. Excel/Google Sheets
直接用INDEX+MATCH+MAX组合函数,定位最大值所在的列,返回对应的列名:
=INDEX(A1:C1, MATCH(MAX(A2:C2), A2:C2, 0))
这里A1:C1是列名所在行,A2:C2是需要对比的数值行,直接扩展范围到10列即可(比如A1:J1和A2:J2)。
关键逻辑总结
- 必须保留「列名-数值」的绑定关系,不能单独处理数值;
- 通过排序取首项或匹配最大值位置的方式,提取对应的列名;
- 扩展到10列时,只需按相同规则追加列的对应关系,核心逻辑不变。
内容的提问来源于stack exchange,提问作者Pierrot
相关产品推荐
相关产品推荐

