2️⃣

IF문과 CASE문, 서브쿼리

1. IF문과 CASE문, 서브쿼리

IF / CASE 문

IF는 보통 MySQL에서 사용되고, CASE는 모든 RDBMS에서 사용 가능해요.
조건에 따라 컬럼 값을 바꾸거나, 조건별 다른 계산을 하려고 할 때 사용합니다.

예시

SELECT name, IF(score >= 60, 'Pass', 'Fail') AS result FROM students; -- 또는 CASE로 같은 표현 SELECT name, CASE WHEN score >= 60 THEN 'Pass' ELSE 'Fail' END AS result FROM students;
SQL
복사

 헷갈릴 때 팁

IF = 간단한 조건일 때, CASE = 복잡하거나 여러 조건일 때
코딩하듯이 "조건별 결과값을 나눈다" 라고 생각하세요.

서브쿼리 vs WITH 문 (공통 테이블 표현식)

항목
서브쿼리
WITH 문 (CTE)
위치
SELECT, FROM, WHERE 절 안에 바로 씀
쿼리의 맨 위에 작성
재사용
안됨
여러 번 참조 가능
가독성
복잡해지기 쉬움
가독성이 좋고 유지보수에 유리
사용 예
간단한 조건에 자주 사용
복잡한 로직 처리 시 선호
상황
추천 도구
이유
쿼리가 길고, 중간 계산을 나눠서 작성하고 싶을 때
WITH 문
각 단계를 이름 붙여 관리 가능, 가독성
같은 쿼리를 여러 번 써야 할 때
WITH 문
중복 제거, 재사용성
쿼리가 짧고 단순한 조건만 필요할 때
서브쿼리
간결하게 처리, 오히려 WITH보다 짧고 명확
성능 최적화가 중요할 때
상황에 따라 다름
어떤 RDBMS에서는 서브쿼리가 더 빠를 수도 있음 (즉, DB 엔진마다 다름)

 예시

서브쿼리
SELECT name FROM students WHERE score > ( SELECT AVG(score) FROM students );
SQL
복사
WITH 문
WITH avg_score AS ( SELECT AVG(score) AS avg FROM students ) SELECT name FROM students, avg_score WHERE score > avg;
SQL
복사

 실무에서는?

복잡한 로직이면 WITH 문 선호 (가독성, 유지보수 측면)
단순한 조건만 있는 경우엔 서브쿼리도 많이 씁니다.

WITH 문서브쿼리는 "상황에 맞는 선택”이 필요하다!

실무에서는 복잡한 로직이나 재사용이 필요한 경우 WITH 문을 자주 사용하는 편이지만,
간단한 조건 필터링이나 단일 조회에는 서브쿼리로도 충분히 처리합니다.
두 방법 중 절대적으로 더 좋은 것은 없으며, 상황에 맞게 선택하는 것이 중요합니다.