您如何根据 BigQuery 中的某些条件 return 每组的特定行?

How do you return a specific row per group by some criteria in BigQuery?

我有 table 个人 firstnamesurnameage。我想检索每个家庭中最年长的人(by surname)。我不想只 return surnameage(通过 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              

如果应用于您问题中的示例数据 - 输出为