DEVELOPER_INFOS
테이블에서 Python 스킬을 가진 개발자의 정보를 조회하려 합니다. Python 스킬을 가진 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요. 결과는 ID를 기준으로 오름차순 정렬해 주세요.
# Python 스킬을 가진 개발자의 ID, 이메일, 이름, 성을 조회
# ID를 기준으로 오름차순 정렬
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE SKILL_1 IN ('Python') OR
SKILL_2 IN ('Python') OR
SKILL_3 IN ('Python')
ORDER BY ID ASC;
어렵지 않은 문제였지만 WHERE문에서 조건을 작성하는 부분이 비효율적으로 작성한 것 같아 프로그래머스에서 다른 분들이 작성한 답을 살펴보았다. 다르게 작성한 답안이 있었는데, 다음과 같았다.
SELECT ID
, EMAIL
, FIRST_NAME
, LAST_NAME
FROM DEVELOPER_INFOS
WHERE 'Python' IN (SKILL_1, SKILL_2, SKILL_3)
ORDER BY ID
WHERE문의 IN
연산자에 문자열이 아닌 컬럼들을 넣어주어 코드의 길이가 짧아지면서 효율적이고 가독성이 좋게 보였다. 실제로 이렇게 작성한 코드를 실행했더니 오류없이 제대로 실행되었다. 이 부분이 신기해서 GPT에게 물어보니, IN
연산자는 값을 먼저 두고 여러개의 컬럼과 비교하는 형태로도 사용이 가능하다고 했다. 그러면서 내부적으로는 아래와 같이 해석된다고 설명해주었다.
'Python' = SKILL_1 OR 'Python' = SKILL_2 OR 'Python' = SKILL_3