DEVELOPER_INFOS 테이블에서 Python 스킬을 보유한 개발자의 ID, 이메일, 이름, 성을 ID 오름차순으로 조회하는 문제이다.
| 테이블 | 주요 컬럼 |
|---|---|
DEVELOPER_INFOS | ID, EMAIL, FIRST_NAME, LAST_NAME, SKILL_1, SKILL_2, SKILL_3 |
개발자가 보유한 스킬은 SKILL_1, SKILL_2, SKILL_3 세 개의 컬럼에 나눠서 저장되어 있다.
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python'
ORDER BY ID
개발자의 스킬은 SKILL_1, SKILL_2, SKILL_3 세 개의 컬럼에 나눠서 저장되어 있기 때문에, 이 세 컬럼 중 어디든 하나라도 'Python'이면 조건을 만족한다. -> OR 로 연결한다.
이를 표현하는 방법은 두 가지가 있다.
-- 방법 1: OR로 연결
WHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python'
-- 방법 2: IN으로 간결하게
WHERE 'Python' IN (SKILL_1, SKILL_2, SKILL_3)
WHERE와 GROUP BY의 차이
| 구분 | 역할 | 적용 시점 |
|---|---|---|
WHERE | 조건에 맞는 행(row)을 필터링 | 그룹화 이전 |
GROUP BY | 같은 값을 가진 행들을 그룹으로 묶기 | 행 필터링 이후 |
구체적으로 정리한 풀이 흐름:
WHERE 'Python' IN (SKILL_1, SKILL_2, SKILL_3)으로 Python 보유 여부 필터ORDER BY ID 오름차순 정렬SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE 'Python' IN (SKILL_1, SKILL_2, SKILL_3)
ORDER BY ID