Post

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;

✅ 실행 순서:

  1. FROM + JOIN
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. 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에 사용하고 있어 오류 발생

📌 해결 방법: PRODUCTIDGROUP BY에 포함하거나 집계 함수로 감싸야 함


3. GROUP BY 안 한 컬럼을 SELECT에서 사용 시 오류 예

1
2
3
4
SELECT PRODUCTID, PRICE, COUNT(*) AS CNT
FROM c_order
JOIN ...
GROUP BY PRODUCTID;
  • PRICEGROUP BY에 없으므로 오류 발생
  • 해결: MAX(PRICE) 또는 MIN(PRICE) 등으로 처리

Summary

  • SQL은 작성 순서와 실행 순서가 다름 (특히 SELECT는 마지막 실행)
  • GROUP BY 사용 시 SELECT에는 반드시 그룹핑한 컬럼 또는 집계 함수만 사용할 것
  • 오류 메시지는 대부분 GROUP BY 관련 실수에서 발생함

End