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