gpt4 book ai didi

sql - 按 id 将行聚合为一个 - postgres

转载 作者:行者123 更新时间:2023-11-29 13:08:27 25 4
gpt4 key购买 nike

例子:

user_id activity_type interested_rooms
1 views 1,2
1 application 1
1 search 3,2

我想得到结果:

user_id interested_rooms  
1 "1","2","3"

然后我想搜索所有对 1 个房间感兴趣的用户

SELECT user_id
FROM blabla
WHERE interested_rooms IN "1"

如何使用 SQL (postgreSQL) 获得此结果?

最佳答案

有很多方法可以实现您想要的。考虑到您的表具有以下结构..

CREATE TABLE blabla (user_id INT,activity_type VARCHAR,interested_rooms VARCHAR);
INSERT INTO blabla VALUES (1,'views','1,2'),
(1,'application','1'),
(1,'search','3,2');

.. 你可以试试 CTE ..

WITH j AS (
SELECT DISTINCT user_id, unnest(string_to_array(interested_rooms,',')) AS rooms
FROM blabla ORDER BY rooms
)
SELECT user_id, array_agg(rooms) AS interested_rooms
FROM j GROUP BY user_id

.. 这将返回你想要的结果

 user_id | interested_rooms 
---------+------------------
1 | {1,2,3}

注意函数的用法 unneststring_to_array将取决于您的问题中未提供的 interested_rooms 列的数据类型。但它应该给你一个做什么的方向。祝你好运!

关于sql - 按 id 将行聚合为一个 - postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58130821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com