为重复的列值添加数组 [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 by
和 array_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]
我想为重复值添加一个包含所有 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 by
和 array_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] |