반응형
한 열의 여러 결과 행을 하나로 연결하고 다른 열로 그룹화
저는 이런 테이블을 먹고 있습니다.
영화. | 배우. |
---|---|
A | 1 |
A | 2 |
A | 3 |
B | 4 |
영화 이름과 해당 영화에 출연하는 모든 배우의 이름을 얻고 싶으며 결과는 다음과 같은 형식으로 표시됩니다.
영화. | 배우 목록 |
---|---|
A | 1, 2, 3 |
어떻게 해야 하나요?
Aggregate 기능(Postgres 9.0 이상)으로 단순화:
SELECT movie, string_agg(actor, ', ') AS actor_list
FROM tbl
GROUP BY 1;
그1
에GROUP BY 1
의 위치 참조 및 바로 가기입니다.GROUP BY movie
이 경우에는
string_agg()
예상 데이터 유형text
입력으로서다른 유형은 명시적으로 캐스팅해야 합니다(actor::text
) - 에 암묵적으로 캐스팅되지 않는 한.text
는 정의됩니다. 이는 다른 모든 문자열 유형의 경우입니다.varchar
,character
,name
...) 및 기타 몇 가지 유형.
isair가 언급했듯이, 당신은 다음을 추가할 수 있습니다.ORDER BY
정렬된 목록을 가져오는 집계 호출의 절 - 필요한 경우.예:
SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list
FROM tbl
GROUP BY 1;
그러나 일반적으로 하위 쿼리에서 행을 정렬하는 것이 더 빠릅니다.참조:
사용할 수 있습니다.array_agg
다음을 위한 기능:
SELECT "Movie",
array_to_string(array_agg(distinct "Actor"),',') AS Actor
FROM Table1
GROUP BY "Movie";
결과:
영화. | 배우. |
---|---|
A | 1,2,3 |
B | 4 |
언급URL : https://stackoverflow.com/questions/15847173/concatenate-multiple-result-rows-of-one-column-into-one-group-by-another-column
반응형
'programing' 카테고리의 다른 글
VBA를 사용하여 Excel 셀의 배경색을 설정하려면 어떻게 해야 합니까? (0) | 2023.05.01 |
---|---|
.net에서 관찰 가능한 컬렉션은 어떤 용도로 사용됩니까? (0) | 2023.05.01 |
Postgre에서 타임스탬프 간의 차이(초) 찾기SQL (0) | 2023.05.01 |
mongoose 스키마 마이그레이션을 올바르게 처리하는 방법은 무엇입니까? (0) | 2023.05.01 |
새 행에 대해서만 기본 NOW()가 있는 타임스탬프 열 (0) | 2023.05.01 |