11. SQL(Note)
11. SQL(Note)
[toc]
SQL 오답 노트
이번에는 SQL 학습 중 실수했던 내용을 오답노트 형식으로 정리하였다.
특히 GROUP BY
사용 시의 조건 및 SELECT
의 실행 순서에 대해 명확히 이해하는 것이 중요하다.
1. SELECT 실행 순서
SQL 문법이 작성된 순서와 실제 DB에서 실행되는 순서는 다르다.
1
2
3
4
5
6
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
+JOIN
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
📌
SELECT
가 가장 마지막에 실행된다는 점에 주의!
2. GROUP BY 조건 없이 일반 컬럼 사용 시 오류
1
2
3
SELECT STATE, AVG(PRICE * QUANTITY) AS avg_, PRODUCTID
FROM ...
GROUP BY STATE;
- 위 예시는
GROUP BY
에 포함되지 않은PRODUCTID
를 SELECT에 사용하고 있어 오류 발생
📌 해결 방법:
PRODUCTID
를GROUP BY
에 포함하거나 집계 함수로 감싸야 함
3. GROUP BY 안 한 컬럼을 SELECT에서 사용 시 오류 예
1
2
3
4
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