말로 적은 조건을 SQL로 바꾸기

테이블 구조를 주고 원하는 집계 쿼리를 받는다

프롬프트 · 변수 3개

저는 {{데이터베이스}}를 쓰고 있고, 분석 도구 없이 직접 쿼리를 짜서 숫자를 확인해야 합니다. 아래에 실제 테이블 구조를 붙여 두었습니다.

제가 알고 싶은 것은 이것입니다: {{알고 싶은 것}}

답을 내기 전에, 테이블 구조만으로는 정할 수 없는 부분(기간의 기준이 되는 열, 취소·환불 건 제외 여부, 중복 집계 처리 등)이 있으면 먼저 최대 3개까지 물어봐 주세요. 제가 답하면 그때 쿼리를 만들어 주세요.

쿼리를 줄 때는 실행 가능한 SQL 한 덩어리를 먼저 보여 주고, 그 아래에 제 요청을 어떻게 해석했는지 "해석 · 근거가 된 열" 표를 붙이고, 마지막으로 결과가 어떤 열로 나오는지 한 줄로 적어 주세요.

아래 구조에 없는 테이블이나 열은 쓰지 마세요. 필요한 값이 구조에 없으면 쿼리를 지어내지 말고 무엇이 없는지 먼저 알려 주세요.

테이블 구조: """ {{테이블 구조}} """

복사한 뒤 여기에 붙여 넣으세요 · ChatGPT·Claude는 프롬프트를 실은 채 열립니다 ChatGPT에서 열기 ↗Claude에서 열기 ↗Gemini에서 열기 ↗뤼튼에서 열기 ↗ 빌더에서 고치기 수업용 카드 이미지 받기

이 프롬프트에는 개인정보가 들어갈 수 있는 변수가 있습니다. 실제 이름·번호·회사명은 가명으로 바꿔 넣으세요.

결과 예시

아직 실제 결과를 확인하지 않았습니다. 확인 후 예시가 채워집니다.

왜 이렇게 쓰는가

맥락
저는 {{데이터베이스}}를 쓰고 있고, 분석 도구 없이 직접 쿼리를 짜서 숫자를 확인해야 합니다. 아래에 실제 테이블 구조를 붙여 두었습니다.
과제
제가 알고 싶은 것은 이것입니다: {{알고 싶은 것}}
되묻기
답을 내기 전에, 테이블 구조만으로는 정할 수 없는 부분(기간의 기준이 되는 열, 취소·환불 건 제외 여부, 중복 집계 처리 등)이 있으면 먼저 최대 3개까지 물어봐 주세요. 제가 답하면 그때 쿼리를 만들어 주세요.
형식
쿼리를 줄 때는 실행 가능한 SQL 한 덩어리를 먼저 보여 주고, 그 아래에 제 요청을 어떻게 해석했는지 "해석 · 근거가 된 열" 표를 붙이고, 마지막으로 결과가 어떤 열로 나오는지 한 줄로 적어 주세요.
제약
아래 구조에 없는 테이블이나 열은 쓰지 마세요. 필요한 값이 구조에 없으면 쿼리를 지어내지 말고 무엇이 없는지 먼저 알려 주세요.
입력 자료
테이블 구조: """ {{테이블 구조}} """

SQL 쿼리 만들기를 AI에게 시킬 때 가장 자주 겪는 일은, 실행하자마자 "그런 열이 없습니다" 오류가 나는 쿼리를 받는 것입니다. 테이블 구조를 주지 않으면 AI는 orders.order_dateusers.is_active 처럼 흔히 쓰이는 이름을 만들어 냅니다. 문법은 완벽하니 얼핏 맞아 보이고, 붙여 넣고 나서야 틀린 것을 압니다.

그래서 맥락이 이 프롬프트의 절반입니다. 열 목록이나 CREATE TABLE 문을 그대로 붙이면 AI는 이름을 지어낼 필요가 없어집니다. 데이터베이스 종류도 함께 밝힙니다. 날짜 차이를 구하는 함수 하나만 봐도 제품마다 이름이 달라서, 이 한 줄이 실행되지 않는 자연어 sql 변환 결과를 크게 줄여 줍니다.

되묻기 문단은 틀린 숫자를 미리 막습니다. "지난달 매출"이라는 한마디에는 기준이 주문일인지 결제일인지, 취소 건을 뺄지가 들어 있지 않습니다. 물어보게 하지 않으면 AI는 하나를 골라 조용히 진행하고, 숫자가 틀렸다는 사실은 보고서가 나간 뒤에 드러납니다. 질문을 3개로 묶은 것은 되묻기가 끝없이 이어지지 않게 하기 위해서입니다.

형식의 "해석 · 근거가 된 열" 표는 검산 장치입니다. 쿼리만 받으면 조건이 제대로 반영됐는지 SQL을 읽을 줄 알아야 확인되지만, 해석을 문장으로 적어 두면 눈으로 대조할 수 있습니다. 테이블 구조를 """ 로 감싼 것은 구조에 섞인 주석이 지시로 읽히지 않게 하고, 어디까지가 자료인지 경계를 분명히 하기 위해서입니다.

용어가 낯설면 아하AI에서: hallucination, prompt

나쁜 예와 비교

흔한 나쁜 예

지난달에 두 번 이상 주문한 고객 수 구하는 SQL 짜줘

테이블 이름부터 orders, users 로 임의로 정해지고, 주문일 열은 order_date 로 지어냅니다. 실행하면 오류가 나거나, 운 나쁘게 이름이 맞으면 취소 주문까지 포함된 틀린 숫자가 나옵니다. 무엇을 기준으로 "지난달"을 잡았는지도 설명에 없어 결과를 믿기 어렵습니다.

변형

되묻기 없이 초안이 급할 때

되묻기 없이 초안이 급할 때

{{데이터베이스}} 기준으로 아래 테이블 구조만 보고 "{{알고 싶은 것}}"을 구하는 쿼리를 만들어 주세요. 저에게 질문하지 말고, 애매한 조건은 가장 보수적인 쪽으로 가정한 뒤 그 가정 목록을 쿼리 맨 위에 주석으로 남겨 주세요.

""" {{테이블 구조}} """

시간이 없을 때 씁니다. 되묻기를 없앤 대신 가정을 주석으로 남기게 해서, 나중에 어디를 고쳐야 하는지는 알 수 있게 했습니다.

결과 숫자가 예상보다 클 때

결과 숫자가 예상보다 클 때

아래 {{데이터베이스}} 테이블 구조에서 "{{알고 싶은 것}}"을 구했는데 숫자가 예상보다 큽니다. 조인·중복 행·NULL 때문에 값이 부풀 수 있는 지점을 목록으로 짚어 주고, 각각을 확인할 수 있는 검산 쿼리를 함께 주세요.

""" {{테이블 구조}} """

집계가 틀렸을 때 원인은 대개 조인으로 행이 늘어난 것입니다. 검산 쿼리를 함께 받아 두면 다음에도 같은 방식으로 확인할 수 있습니다.

모델별 주의

받은 쿼리는 운영 데이터베이스에서 바로 돌리지 말고 읽기 권한 계정으로 먼저 확인하세요. 건수가 예상과 다르면 조건을 하나씩 빼며 좁히면 원인이 빨리 보입니다

관련 프롬프트

마지막 수정 2026-09-02 · 잘못된 점이 있나요? 알려 주세요