gpt4 book ai didi

sql - 如何在重复多列的列中获取ID

转载 作者:行者123 更新时间:2023-11-29 14:17:51 25 4
gpt4 key购买 nike

我有一张像下一张这样的 table :

 TABLE 1
-------
ID Integer
COLUMN_1 Text
COLUMN_2 Text
COLUMN_3 Integer

如何获取 COLUMN_1COLUMN_2COLUMN_3 的组合在同一列中重复出现的 ID?

我计算重复分组的列,如下所示:

select  column_1, column_2, column_3, count(*) from table_ 1 group by icolumn_1, column_2, column_3;

但我正在寻找的是如何同时获取 ID。


例子

所以如果我有下一个数据:

ID  | COLUMN_1 | COLUMN_2 | COLUMN_3
1 | BLUE | FISH | SEA
2 | BLUE | FISH | SEA
3 | BLUE | FISH | RIVER

我正在寻找类似下一个的结果:

 IDs Repeated |  COLUMN_1 | COLUMN_2 | COLUMN_3 | COUNT
1, 2 | BLUE | FISH | SEA | 2
3 | BLUE | FISH | RIVER | 1

最佳答案

在您的特定情况下,以下查询应该执行您想要的操作:

SELECT string_agg(id::varchar, ', ') AS "IDs Repeated",
column_1, column_2, column_3, COUNT(*)
FROM p
GROUP BY column_1, column_2, column_3;

(我更正了我认为是您结果列名称中的拼写错误)。

但是,结果不是第一范式。您可能对以下查询感兴趣:

SELECT id, column_1, column_2, column_3, COUNT(*) OVER (PARTITION BY column_1, column_2, column_3)
FROM p;

id | column_1 | column_2 | column_3 | count
----+----------+----------+----------+-------
3 | BLUE | FISH | RIVER | 1
1 | BLUE | FISH | SEA | 2
2 | BLUE | FISH | SEA | 2
(3 rows)

关于sql - 如何在重复多列的列中获取ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41634309/

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