为重复的列值添加数组 [SQL]

Add array for column value for duplicates [SQL]

我想为重复值添加一个包含所有 last_action 值的数组。 sample_table

client_id  action_timestamp  last_action
201        2020-01-01 09:00  click
201        2020-01-01 09:00  browse
303        2020-01-01 11:00  action


desired_output_table

client_id  action_timestamp  agg_action
201        2020-01-01 09:00  {click,browse}
303        2020-01-01 11:00  {action}

您可以使用 group byarray_agg:

-- sample data
WITH dataset (client_id,  action_timestamp,  last_action) AS (
    VALUES  ('201',        '2020-01-01 09:00',  'click'),
            ('201',        '2020-01-01 09:00',  'browse'),
            ('303',        '2020-01-01 11:00',  'action')
) 

--query
select client_id,
    action_timestamp,
    array_agg(last_action)
from dataset
group by client_id, action_timestamp

输出:

client_id action_timestamp _col2
201 2020-01-01 09:00 [click, browse]
303 2020-01-01 11:00 [action]