当多个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 中使用。
答案 0 :(得分:1)
pgadmin 建议您使用 Postgres。这反过来表明您应该使用 string_agg()
或 array_agg()
:
SELECT userId, passageId, ARRAY_AGG(score)
FROM mytable
GROUP BY userId, passageId
HAVING COUNT(*) >= 2;