Google bigquery BigQuery:使用数组类型字段选择最近的一组行

Google bigquery BigQuery:使用数组类型字段选择最近的一组行,google-bigquery,Google Bigquery,我有一个包含3列的表:字符串、日期时间、数组 Name | LastLogin | FavoriteNumbers Paul | "2019-03-03T06:29:35" | (1, 3, 6, 8) Paul | "2019-03-03T02:29:35" | (1, 3, 6, 8) Paul | "2019-03-01T01:29:35" | (1, 3, 6, 8) Anna | "2019-03-03T02:29:35" | (1, 2, 3, 4)

我有一个包含3列的表:字符串、日期时间、数组

Name  |       LastLogin       | FavoriteNumbers
Paul  | "2019-03-03T06:29:35" | (1, 3, 6, 8)
Paul  | "2019-03-03T02:29:35" | (1, 3, 6, 8)
Paul  | "2019-03-01T01:29:35" | (1, 3, 6, 8)
Anna  | "2019-03-03T02:29:35" | (1, 2, 3, 4)
Anna  | "2019-03-03T01:29:35" | (1, 2, 3, 4)
Maya  | "2019-03-02T10:29:35" | (9, 11, 13, 8)
这就是我想要的结果:

我尝试使用GROUP BY with ARRAY_AGG来获取每个名称的最新时间戳,但它不起作用,因为GROUP BY不能用于数组类型字段


我怎样才能得到我想要的结果?使用标准SQL。

使用ARRAY\u AGG聚合到结构中,然后提取字段:

SELECT
  Name,
  ARRAY_AGG(
    STRUCT(LastLogin, FavoriteNumbers)
    ORDER BY LastLogin DESC LIMIT 1
  )[OFFSET(0)].*
FROM dataset.table
GROUP BY Name

在中有许多与您类似的问题,例如,如果您仍然需要帮助,请进行一些研究并分享您正在使用的最新SQL
SELECT
  Name,
  ARRAY_AGG(
    STRUCT(LastLogin, FavoriteNumbers)
    ORDER BY LastLogin DESC LIMIT 1
  )[OFFSET(0)].*
FROM dataset.table
GROUP BY Name