11. SQL(Note)
11. SQL(Note)
[toc]
SQL 오답 노트
이번에는 SQL 학습 중 실수했던 내용을 오답노트 형식으로 정리하였다.
특히 GROUP BY 사용 시의 조건 및 SELECT의 실행 순서에 대해 명확히 이해하는 것이 중요하다.
1. SELECT 실행 순서
SQL 문법이 작성된 순서와 실제 DB에서 실행되는 순서는 다르다.
SELECT STATE, AVG(PRICE * QUANTITY) AS avg_ FROM c_order o JOIN c_customer c ON o.CUSTOMERID = c.CUSTOMERID JOIN c_product p ON o.PRODUCTID = p.PRODUCTID GROUP BY STATE ORDER BY avg_ DESC; ✅ 실행 순서:
FROM+JOINWHEREGROUP BYHAVINGSELECTORDER BY
📌
SELECT가 가장 마지막에 실행된다는 점에 주의!
2. GROUP BY 조건 없이 일반 컬럼 사용 시 오류
SELECT STATE, AVG(PRICE * QUANTITY) AS avg_, PRODUCTID FROM ... GROUP BY STATE; - 위 예시는
GROUP BY에 포함되지 않은PRODUCTID를 SELECT에 사용하고 있어 오류 발생
📌 해결 방법:
PRODUCTID를GROUP BY에 포함하거나 집계 함수로 감싸야 함
3. GROUP BY 안 한 컬럼을 SELECT에서 사용 시 오류 예
SELECT PRODUCTID, PRICE, COUNT(*) AS CNT FROM c_order JOIN ... GROUP BY PRODUCTID; PRICE가GROUP BY에 없으므로 오류 발생- 해결:
MAX(PRICE)또는MIN(PRICE)등으로 처리
Summary
- SQL은 작성 순서와 실행 순서가 다름 (특히 SELECT는 마지막 실행)
- GROUP BY 사용 시 SELECT에는 반드시 그룹핑한 컬럼 또는 집계 함수만 사용할 것
- 오류 메시지는 대부분 GROUP BY 관련 실수에서 발생함
End
