아티클
아티클 요약
- ChatGPT를 이용하여 질문을 제공하고 SQL 쿼리를 생성, 퍼포먼스를 비교
- 오류 발생 시 단순 재시도 요청과 사례 제시가 100% 개선을 보장하지는 않음
- 대부분 중간 이상의 성과를 내지만, 1393. Capital Gain/Loss에서 반복 오류 발생
아티클 보강: 개선 테스트
- 기사에서는 608. Treenode 항목이 오답을 반환한 경우로 제시됐으나, 현재 테스트하는 경우 정확한 답변으로 보통 이상의 퍼포먼스를 제공
- ChatGPT로 응답을 생성할 때, 첫 번째 답변이 틀리는 경우 반복 질문하기보다 대화창을 종료하고 다시 질문하는 쪽이 정확한 답변을 도출
- 반복적인 오류를 만들어내는 1393. Capital Gain/Loss 의 경우 최초 응답은 다음과 같음:
SELECT stock_name, SUM(CASE WHEN operation = 'Sell' THEN -price ELSE price END) AS capital_gain_loss FROM Stocks GROUP BY stock_name;
이 경우에는 답이 틀렸다고 지적하거나 사례를 제공하더라도 쿼리가 복잡해지기만 하고, 갈수 록 전혀 올바르지 않은 답, 가령 기사에 인용된 바와 같이 28,980과 같은 부정확한 숫자를 생성함.
그러나 ChatGPT가 언어 모델이며, ‘판매’ 같은 단어가 주로 -로 처리됐으리라 가정하여 ChatGPT가 과제의 특수한 문맥을 이해하도록 문장으로 조건을 표기할 수 있음.
즉 “판매하는 경우 대금을 받게 되므로 가격은 양수로 처리(a 'Sell' operation needs to be considered a gain)”라는 조건을 추가하면 답변이 즉시 정확하게 개선됨.
즉 “판매하는 경우 대금을 받게 되므로 가격은 양수로 처리(a 'Sell' operation needs to be considered a gain)”라는 조건을 추가하면 답변이 즉시 정확하게 개선됨.
SELECT stock_name, SUM(CASE WHEN operation = 'Sell' THEN price ELSE -price END) AS capital_gain_loss FROM Stocks GROUP BY stock_name;
해당 쿼리는 테스트를 통과하고, 런타임 또한 821㎳로 상위 36%의 퍼포먼스를 보임. 여기에 명시적 CASE 사용을 추가 요청하는 경우(use the CASE statement with an explicit end) 런타임 468㎳인 상위 0.04% 구문과 동일한 응답을 반환.
SELECT stock_name, SUM(Case When operation='Buy' then -price When operation='Sell' then price End) AS capital_gain_loss FROM stocks GROUP BY stock_name;
이밖에도 LeetCode에서 제공하는 초중급 Python, C++ 코드 작성 과제를 테스트한 결과, 코드에 대한 지식이 전무하더라도 ChatGPT 응답으로 대부분의 테스트를 통과. 결국 ChatGPT 특성을 이해한 프롬프트 작성이 정확한 코드 반환의 관건.
연관 아티클
- SeekWell Blog, Automating my job by using GPT-3 to generate database-ready SQL to answer business questions (2/1/2021)
- Helena Alexander, Power Up Your MySQL Queries: How ChatGPT Can Help You Retrieve MySQL Data (2/6/2023)