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_type003일 경우 002와 같이 그룹핑하기 위해서 값을 002로 다루도록 하고, 006의 경우도 005와 같이 그룹핑할 수 있도록 값을 005로 다루도록 합니다. 그 외의 값은 원래의 값을 사용하도록 하여 GROUP 하도록 하는 것입니다.

    위 방법은 질문에서 언급한 cu_inflow_type이 한정되었을 때 가능하며, 만약 더욱 많아진다면 cu_inflow_type 값이 GROUP할 때 동질성을 표현할 수 있는 별도의 테이블이 필요합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)