MySql Group_concat()함수 사용법.
조회수 2684회
안녕하세요.
지금 group_concat()땜에 삽질중입니다.
일단
select
group_concat(cu1.cu_inflow_type),count(cu1.cu_inflow_type)
from cu_test cu1
left join cu_test cu2
on cu2.seq=cu1.seq
group by cu1.cu_inflow_type
결과:
======================================================================
group_concat(cu1.cu_inflow_type) | count(cu1.cu_inflow_type)
----------------------------------------------------------------------
001,001,001,001,001,001,001,00.. | 27
002,002 | 2
003,003 | 2
004,004,004 | 3
005 | 1
006 | 1
----------------------------------------------------------------------
이런 기본적인 결과가 나오는데요.
제가 원하는 결과는 바로 아래처럼
======================================================================
group_concat(cu1.cu_inflow_type) | count(cu1.cu_inflow_type)
----------------------------------------------------------------------
001,001,001,001,001,001,001,00.. | 27
002,002,003,003 | 4 <-- 002와 003 합침
004,004,004 | 3
005,006 | 2 <-- 005와 006 합침
----------------------------------------------------------------------
이런 결과를 출력시키고싶습니다. 근데 어떻게 해야하는지 모르겠습니다. ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
cu_inflow_type 이 나열형으로 더이상 변화가 없을 거라는 전제하에서 다음과 같이 해볼 수 있을 것 같습니다.
SELECT group_concat(cu1.cu_inflow_type),count(cu1.cu_inflow_type) FROM cu_test cu1 LEFT JOIN cu_test cu2 ON cu2.seq=cu1.seq GROUP BY (CASE WHEN cu1.cu_inflow_type = '003' THEN '002' WHEN cu1.cu_inflow_type = '006' THEN '005' ELSE cu1.cu_inflow_type END)
GROUP BY
절에서cu_inflow_type
이003
일 경우002
와 같이 그룹핑하기 위해서 값을002
로 다루도록 하고,006
의 경우도005
와 같이 그룹핑할 수 있도록 값을005
로 다루도록 합니다. 그 외의 값은 원래의 값을 사용하도록 하여 GROUP 하도록 하는 것입니다.위 방법은 질문에서 언급한
cu_inflow_type
이 한정되었을 때 가능하며, 만약 더욱 많아진다면cu_inflow_type
값이 GROUP할 때 동질성을 표현할 수 있는 별도의 테이블이 필요합니다.
댓글 입력