반응형
한 열의 여러 결과 행을 하나로 연결하고 다른 열로 그룹화
이 질문에는 이미 답변이 있습니다.
이런 테이블이 있어요
Movie Actor
A 1
A 2
A 3
B 4
영화의 이름과 그 영화의 모든 배우를 얻고 싶고 결과가 다음과 같은 형식이되기를 원합니다.
Movie ActorList
A 1, 2, 3
내가 어떻게 해?
집계 함수 string_agg()
(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
, "char"
), 그리고 몇몇 다른 유형.
isapir가 주석을 달았 듯이 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";
결과:
| MOVIE | ACTOR |
-----------------
| A | 1,2,3 |
| B | 4 |
이 SQLFiddle 참조
select movie,GROUP_CONCAT(DISTINCT Actor) as ActorList from toyr_table group by movie
여기에서 읽을 수 있습니다. http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php
반응형
'program tip' 카테고리의 다른 글
TEXTIMAGE_ON [PRIMARY]는 무엇인가요? (0) | 2020.08.07 |
---|---|
원격 태그를 보는 방법? (0) | 2020.08.07 |
JUnit을 사용하여 서블릿을 테스트하는 방법 (0) | 2020.08.07 |
django-request.POST 객체를 변경할 수없는 이유는 무엇입니까? (0) | 2020.08.07 |
Sublime Text regex가 여러 줄 태그를 감지하지 못함 (0) | 2020.08.07 |