면접에서 물어보는 SQL 쿼리
Source: Dev.to
마스터 SQL 인터뷰 패턴
거의 모든 쿼리는 다음과 같은 사고 흐름을 따릅니다:
SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
Mnemonic: “스마트한 친구들은 점심에 초록 모자를 쓴다.”
- S → SELECT (컬럼 /
SUM,COUNT,AVG같은 함수) - F → FROM
- W → WHERE
- G → GROUP BY
- H → HAVING
- O → ORDER BY
- L → LIMIT
대부분의 면접 쿼리는 이 파이프라인의 변형입니다.
1️⃣ N번째 높은 급여
Pattern: ORDER BY column DESC → LIMIT N
SELECT *
FROM employees
ORDER BY salary DESC
LIMIT 3;
Memory trick: 순위 매기기 → ORDER BY + LIMIT
3️⃣ 중복 이름
Pattern: GROUP BY column → HAVING COUNT(*) > 1
SELECT name, COUNT(*)
FROM employees
GROUP BY name
HAVING COUNT(*) > 1;
Memory trick: 중복 감지 → GROUP BY + HAVING
7️⃣ “A”로 시작하는 이름
Pattern: WHERE 조건
WHERE name LIKE 'A%';
WHERE salary BETWEEN 10000 AND 50000;
Memory trick: 필터링 → WHERE
8️⃣ 부서별 직원 수
Pattern: SELECT COUNT(*) → FROM table → WHERE condition
SELECT COUNT(*)
FROM employees
WHERE department_name = 'ABC';
Memory trick: 카운팅 → COUNT + WHERE
5️⃣ 빈 테이블 만들기 (구조 복사)
Pattern: SELECT * INTO new_table FROM old_table WHERE 1=0
SELECT *
INTO new_table
FROM old_table
WHERE 1 = 0;
Memory trick: 구조 복사 → WHERE FALSE
13️⃣ 관리자 아래 직원 (조인)
Pattern: SELECT columns FROM table1 JOIN table2 ON condition
SELECT e.name, s.salary
FROM employees e
JOIN salaries s
ON e.employee_id = s.employee_id;
Memory trick: 다중 테이블 → JOIN
19️⃣ UNION
Pattern:
SELECT ...
UNION
SELECT ...
Memory trick: 결과 결합 → UNION
15️⃣ 최근 8개월 내 채용된 직원
Pattern: WHERE date >= CURRENT_DATE - INTERVAL
WHERE hire_date >= CURDATE() - INTERVAL 8 MONTH;
Memory trick: 시간 필터링 → INTERVAL
패턴 요약
| SQL 키워드 | 용도 |
|---|---|
| Ranking | ORDER BY + LIMIT (예: 최고 급여) |
| Duplicate detection | GROUP BY + HAVING (중복) |
| Filtering | WHERE (조건) |
| Aggregation | COUNT / SUM (합계) |
| Table copy | SELECT INTO (구조) |
| Multi‑table | JOIN (관계) |
| Result merge | UNION (결합) |
쿼리 구성 체크리스트
- 어떤 데이터? →
SELECT - 어디서? →
FROM - 필터가 있나요? →
WHERE - 그룹화가 있나요? →
GROUP BY - 그룹 필터가 있나요? →
HAVING - 정렬이 있나요? →
ORDER BY - 제한이 있나요? →
LIMIT
이 순서는 쿼리를 머리속에 재구성하는 데 도움이 됩니다.
FROGS‑HL 기억하기
- F → FROM
- R → WHERE (제한을 의미)
- O → ORDER BY
- G → GROUP BY
- S → SELECT
- H → HAVING
- L → LIMIT
질문 카테고리 분포
| 카테고리 | 수 |
|---|---|
| 필터링 | 6 |
| 순위 매기기 | 4 |
| 집계 | 3 |
| 조인 | 3 |
| 중복 | 2 |
| 테이블 복사 | 2 |
| 집합 연산 | 2 |
| 날짜 쿼리 | 1 |
인사이트: 면접관은 가장 자주 필터링, 순위 매기기, 그리고 집계를 테스트합니다.