Database/SQL

[프로그래머스 SQL Lv.1] Python 개발자 찾기 (MySQL)

imnyoung 2025. 11. 25. 18:35

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/276013

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. 테이블 : DEVELOPER_INFOS

NAME TYPE UNIQUE NULLABLE
ID VARCHAR(N) Y N
FIRST_NAME VARCHAR(N) N Y
LAST_NAME VARCHAR(N) N Y
EMAIL VARCHAR(N) Y N
SKILL_1 VARCHAR(N) N Y
SKILL_2 VARCHAR(N) N Y
SKILL_3 VARCHAR(N) N Y

 

2. 문제

DEVELOPER_INFOS 테이블에서 Python 스킬을 가진 개발자의 정보를 조회하려 합니다. (1) Python 스킬을 가진 (2) 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요. (3) 결과는 ID를 기준으로 오름차순 정렬해 주세요.

 

3. 문제풀이

python 스킬을 가진 개발자를 조회하기 위해 처음에는 아래처럼 WHERE절을 썼었다.

WHERE skill_1 = "python" OR skill_2 = "python" OR skill_3 = "python"

그런데 IN도 혹시 쓸 수 없을까? 해서 찾아보니 사용이 가능했다.

처음에 헷갈렸던 이유는 보통 IN은 "열 in (값1, 값2)"처럼 쓰는데, 이 문제에서는 반대로 "값 in (열1, 열2)"같은 방식으로 써야했기 때문이다.

찾아보니 둘 다 가능하다고 한다.

(1) 열 in (값1, 값2, ...) : 여러 개의 값 목록 중에서 하나의 값이라도 만족하면 조건에 해당하는 결과를 출력

(2) 값 in (열1, 열2, ...) : 여러 개의 열 목록 중 해당 값을 가지고 있는 열을 결과에 포함

따라서 앞에서 작성한 WHERE절을 아래와 같이 바꿀 수 있다.

WHERE "python" in (skill_1, skill_2, skill_3)

 

4. 정답

따라서 정답은

SELECT id, email, first_name, last_name  -- id, 이메일, 이름, 성 조회
FROM developer_infos
WHERE "python" in (skill_1, skill_2, skill_3)  -- python 스킬 가진 개발자
ORDER BY id   -- id 기준 오름차순(오름차순은 asc 생략 가능)

또는

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

 

 


Reference

https://cloudjini.tistory.com/entry/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-MYSQLMSSQL-Python-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%B0%BE%EA%B8%B0

https://dalcheonroadhead.tistory.com/