코딩 테스트

[프로그래머스 SQL] Lv1 Python 개발자 찾기

그리득 2024. 8. 3. 12:51
728x90

회사 내부 프로젝트에서는 ORM을 사용하여 쿼리를 직접적으로 작성할 일이 거의 없었는데 새로 맡은 프로젝트에서는 쿼리문을 작성해야 하는 상황이 많아져서, SQL에 대한 공부의 필요성을 느껴 글을 작성했습니다.

 

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/276013

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

DEVELOPER_INFOS 테이블은 개발자들의 프로그래밍 스킬 정보를 담은 테이블입니다. DEVELOPER_INFOS 테이블 구조는 다음과 같으며, ID, FIRST_NAME, LAST_NAME, EMAIL, SKILL_1, SKILL_2, SKILL_3는 각각 ID, 이름, 성, 이메일, 첫 번째 스킬, 두 번째 스킬, 세 번째 스킬을 의미합니다.

 

테이블 구조

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

 

문제

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

 

제출 답안

SELECT
	ID,
    EMAIL,
    FIRST_NAME,
    LAST_NAME
FROM
	DEVELOPER_INFOS
WHERE
	SKILL_1 LIKE 'Python'
	|| SKILL_2 LIKE 'Python'
	|| SKILL_3 LIKE '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

 

사담

WHERE절에 하나씩 비교하는 코드를 짰는데 중복 코드가 너무 많아서 IN절로 해결할 수 없을까 고민을 해봤다.

검색을 해보니 키워드를 WHERE절에 넣고 해결할 수 있는 방법이 있었다.

키워드를 앞에 넣는 건 생각 못했는데 확실히 코드가 깔끔해진 거 같다.