如何从数据库表中提取重复值

时间:2021-01-26 20:39:08

标签: sql postgresql

当多个passageId值对于userId的每个值都相同时,是否可以提取'score'的值,如下所示。

userId passageId score
1      1         2
1      2         3
1      1         4
1      1         5
2      1         3
2      3         3
2      3         4

结果:

userId passageId scores
1      1         2, 4, 5
1      2         3
2      1         3
2      3         3, 4

有人建议我使用以下代码,但我需要提取两个以上的值:

SELECT 
   userId,
   passageId,
   min(score) as score_1,
   max(score) as score_2
FROM mytable
GROUP BY    
   userId,
   passageId
HAVING COUNT(*)>=2;

我也被建议使用 string_agg,但无法在 pgAdmin 中使用。

1 个答案:

答案 0 :(得分:1)

pgadmin 建议您使用 Postgres。这反过来表明您应该使用 string_agg()array_agg()

SELECT userId, passageId, ARRAY_AGG(score)
FROM mytable
GROUP BY userId, passageId
HAVING COUNT(*) >= 2;
相关问题