您如何根据 BigQuery 中的某些条件 return 每组的特定行?
How do you return a specific row per group by some criteria in BigQuery?
我有 table 个人 firstname
、surname
和 age
。我想检索每个家庭中最年长的人(by surname
)。我不想只 return surname
和 age
(通过 MAX(age)
和 GROUP BY surname
)我想要整行。
例如,如果我的数据是:
firstname, surname, age
john, smith, 31
sally, smith, 33
bob, smith, 34
john wayne, 35
bob wayne, 31
我想查询 return:
firstname, surname, age
bob, smith, 34
john wayne, 35
考虑以下方法
select surname, array_agg(struct(firstname, age) order by age desc limit 1)[offset(0)].*
from your_table
group by surname
如果应用于您问题中的示例数据 - 输出为
我有 table 个人 firstname
、surname
和 age
。我想检索每个家庭中最年长的人(by surname
)。我不想只 return surname
和 age
(通过 MAX(age)
和 GROUP BY surname
)我想要整行。
例如,如果我的数据是:
firstname, surname, age
john, smith, 31
sally, smith, 33
bob, smith, 34
john wayne, 35
bob wayne, 31
我想查询 return:
firstname, surname, age
bob, smith, 34
john wayne, 35
考虑以下方法
select surname, array_agg(struct(firstname, age) order by age desc limit 1)[offset(0)].*
from your_table
group by surname
如果应用于您问题中的示例数据 - 输出为