LISTAGG 질문 드립니다. 가능한지 모르겠어요 0 6 1,985

by 낭만캐치 [2014.11.13 09:34:01]


안녕하세요.

수능날 답게 쌀쌀한 날씨네요, 한창 수능날만 되면 눈이 내리던데 몇년간 안내리는거 보니..

환경오염이..(?) .. 죄송합니다. 본론으로 넘어가 LISTAGG를 사용하여

2개의 컬럼을 합하고싶은데. 컬럼명은

failcon, count(*) 입니다.

원하는 데이터의 결과값

----------------------------------------------------------------------------------

failcon

연결이실패함 : 299 접속시도중 : 500 사용자 없음 : 600

----------------------------------------------------------------------------------

 

SELECT LISTAGG(FAILCON, ': ') WITHIN GROUP (ORDER BY COUNT(*)) AS FAILCON

FROM A

WHERE ID = 'ABC'

GROUP BY FAILCON

이렇게하면 실패사유만 나와서 질문 드렸습니다.

가능한건지 모르겠어서요

답변주시면 감사하겠습니다. 즐거운 하루 보내세요^^

by 마농 [2014.11.13 10:39:56]

여러행의 값을 하나로 묶어주는 집계함수 ListAgg 와
여러열의 값을 하나로 묶어주는 문자함수 Concat 또는 || 을 구별하지 못하시는 듯 하네요.

SELECT LISTAGG(failcon || ' : ' || COUNT(*), ' ') WITHIN GROUP(ORDER BY failcon) failcon
  FROM a
 WHERE id = 'ABC'
 GROUP BY failcon
;

 


by 낭만캐치 [2014.11.13 10:48:24]

아 제가 질문을 잘못드렸네요

원본 데이터의 쿼리

SELECT failcon

, count(*)

FROM A

WHERE A.ID = 'ABC'

GROUP BY failcon

------------------------------------------------

failcon count

연결안됨 144

접속종료 243

사용자없음 559

---------------------------------------------

 

원하는 데이터의 결과값

----------------------------------------------------------------------------------

failcon

연결안됨 : 144 접속종료 : 243 사용자없음 : 559

----------------------------------------------------------------------------------


by 마농 [2014.11.13 11:17:13]

음... 저는 이미 질문을 충분히 이해하고 답변 드린 것 같은데요???


by 낭만캐치 [2014.11.13 11:20:40]

아 네 마농님 맞습니다

select max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

        || max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

        || max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

from(

select rank() over( order by( count(*) desc ) as rk

        , failcon

        , count(*) as cnt

from A

where ID = 'ABC'

group by failcon

으로 해결했습니다.

도움 감사드립니다~~


by 마농 [2014.11.13 11:24:03]

제가 제시한 방법은요???


by 낭만캐치 [2014.11.17 15:15:32]

마농님이 알려주신 방법이 맞았습니다.

감사합니다^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입