我有一个包含 3 个重要列的 Bigquery 表:
user_id
, created_at
, updated_at
.
每个user_id
可以有多个记录,例如:
+----------+------------+-------------+-----------------+
| user_id | created_at | updated_at | task_name |
+----------+------------+-------------+-----------------+
| user_1 | 2020-01-01 | 2020-01-02 | some_task_name1 |
| user_1 | 2020-01-01 | 2020-01-03 | some_task_name1 |
| user_1 | 2020-03-01 | 2020-03-01 | some_task_name1 |
| user_2 | 2020-01-01 | 2020-01-02 | some_task_name2 |
+----------+------------+-------------+-----------------+
对于每个user_id
具有相同created_at
值的记录,我想选择具有最新updated_at
. 例如,在这个例子中,输出必须是:
+----------+------------+-------------+-----------------+
| user_id | created_at | updated_at | task_name |
+----------+------------+-------------+-----------------+
| user_1 | 2020-01-01 | 2020-01-03 | some_task_name1 |
| user_1 | 2020-03-01 | 2020-03-01 | some_task_name1 |
| user_2 | 2020-01-01 | 2020-01-02 | some_task_name2 |
+----------+------------+-------------+-----------------+
我正在尝试这个,但我不知道如何为相同的条件添加条件created_at
:
SELECT
agg.table.*
FROM (
SELECT
user_id,
ARRAY_AGG(STRUCT(table)
ORDER BY
updated_at DESC)[SAFE_OFFSET(0)] agg
FROM
`dataset.my_table` table
GROUP BY
user_id)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句