문자열 distinct 문의 드립니다 0 10 2,301

by 일곱난장이 [Oracle 기초] 문자열 DISTINCT [2023.02.02 16:38:17]


안녕하세요, 질문 드립니다

A '1'
B '2,3'
C '2,5,6'
D '1,6'

 

조회된 리스트를 

'1,2,3,5,6'--> 한개의 행으로 결과를 얻고 싶습니다

부탁드립니다

by 마농 [2023.02.02 18:06:45]
WITH t AS
(
SELECT 'A' cd, '1' v FROM dual
UNION ALL SELECT 'B', '2,3'   FROM dual
UNION ALL SELECT 'C', '2,5,6' FROM dual
UNION ALL SELECT 'D', '1,6'   FROM dual
)
SELECT LISTAGG(x, ',') WITHIN GROUP(ORDER BY x) x
  FROM (SELECT DISTINCT x
          FROM t
             , XMLTABLE(v COLUMNS x NUMBER PATH '.')
        )
;
-- http://gurubee.net/article/55635

 


by 일곱난장이 [2023.02.03 08:21:41]

매번 너무 감사드립니다~~

실례가 안된다면, 연락처 주시면 약소하나마 감사인사를 드리고 싶습니다~~~


by jkson [2023.02.03 09:20:00]

인공지능 ChatGPT에 질문했더니 아래와 같은 쿼리를 만들어주네요ㅎㅎ

Q :

오라클에 T라는 테이블은 아래와 같이 구성되어있어.

WITH t AS
(
SELECT 'A' cd, '1' v FROM dual
UNION ALL SELECT 'B', '2,3'   FROM dual
UNION ALL SELECT 'C', '2,5,6' FROM dual
UNION ALL SELECT 'D', '1,6'   FROM dual
)

컬럼 v에는 콤마로 구분되는 숫자가 있는데
모든 행의 v의 숫자를 가져와 중복을 제거하고 다음과 같은 결과를 도출하는 쿼리를 만들어 줘.
1,2,3,5,6

A :

WITH t AS (
SELECT 'A' cd, '1' v FROM dual
UNION ALL SELECT 'B', '2,3' FROM dual
UNION ALL SELECT 'C', '2,5,6' FROM dual
UNION ALL SELECT 'D', '1,6' FROM dual
),
t_split AS (
SELECT cd, TRIM(REGEXP_SUBSTR(v, '[^,]+', 1, LEVEL)) AS num
FROM t
CONNECT BY LEVEL <= LENGTH(v) - LENGTH(REPLACE(v, ',', '')) + 1
)
SELECT listagg(num, ',') WITHIN GROUP (ORDER BY num) AS result
FROM (SELECT DISTINCT num FROM t_split)

다른 방법도 알려달랬더니 아래 쿼리도 알려주는데

테스트 환경이 안 되어서 잘 돌아가는지는 모르겠네요.

SELECT column_value as result
FROM xmltable(
'for $i in distinct-values(/ROWSET/ROW/v)
return $i'
PASSING XMLType(
'<ROWSET>' ||
(
SELECT replace(v,',') as v
FROM t
FOR XML PATH(''), type
)
|| '</ROWSET>'
)
)


AI 발전 속도가 참 대단합니다ㅎㄷㄷ


by 랑에1 [2023.02.03 10:04:00]

와우~ 놀랍네요 ㅎㅎ

질문이 정제되어있어서 결과가 잘 나온 것이려나요?


by 우리집아찌 [2023.02.03 10:41:15]

똘똘한 AI 네..


by jkson [2023.02.03 10:41:17]

미리 작성된 질문을 패턴으로 답한다는 느낌보다는 대화하면서 쿼리가 점점 개선되는 걸로 봐서는 딥러닝이라든지 AI 로직을 제대로 구현했다는 느낌입니다. 코딩 테스트 사이트인 백준에 있는 알고리즘 문제도 입력해봤는데 자바코드를 순식간에 만들어주더라구요. 물론 백준에 AI가 만들어준 코드를 입력하니 테스트 통과ㅎㅎ 제가 만든 프로그램과 비교해 달랬더니 제가 어떤 종류의 알고리즘을 사용하였고 AI가 만든 코드에 비해 어떤 장단점이 있다는 것까지 설명해주더라구요ㅎㅎ;; 아직 퍼팩트한 수준은 아니지만 그래도 초급 이상의 프로그래머 정도 수준은 되겠다는 느낌인데.. 프로그래밍 쪽이 아닌 문학이나 기타 영역에서는 더 능력이 뛰어나다고 하네요. 조만간 프로그래밍도 이제 컴퓨터가 대신해주는 시대가 오지 않을까 하네요ㅎㅎ


by 우리집아찌 [2023.02.03 10:43:41]

이제 개발자 대신 AI 가 일하는 세상이 오겠넹... 


by jkson [2023.02.03 10:51:04]

사라진다기보다는 이제 기획자/검수자 정도의 느낌으로 일해야 하는 시대가 곧 올 것 같네요.ㅎㅎ


by 랑에1 [2023.02.03 11:36:42]

종종 활용해봐야겠네요. 좋은 정보 감사합니다 : )


by 일곱난장이 [2023.02.06 12:57:12]

좋은 정보, 감사합니다~~~

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