반응형
테이블 정보
1. SKILLCODES
NAME | TYPE | UNIQUE | NULLABLE |
NAME | VARCHAR(N) | Y | N |
CATEGORY | VARCHAR(N) | N | N |
CODE | INTEGER | Y | N |
2. DEVELOPERS
NAME | TYPE | UNIQUE | NULLABLE |
ID | VARCHAR(N) | Y | N |
FIRST_NAME | VARCHAR(N) | N | Y |
LAST_NAME | VARCHAR(N) | N | Y |
VARCHAR(N) | Y | N | |
SKILL_CODE | INTEGER | N | N |
예시 테이블
1. SKILLCODES
NAME | CATEGORY | CODE |
C++ | Back End | 4 |
JavaScript | Front End | 16 |
Java | Back End | 128 |
Python | Back End | 256 |
C# | Back End | 1024 |
React | Front End | 2048 |
Vue | Front End | 8192 |
Node.js | Back End | 16384 |
2. DEVELOPERS
ID | FIRST_NAME | LAST_NAME | SKILL_CODE | |
D165 | Jerami | Edwards | jerami_edwards@grepp.co | 400 |
D161 | Carsen | Garza | carsen_garza@grepp.co | 2048 |
D164 | Kelly | Grant | kelly_grant@grepp.co | 1024 |
D163 | Luka | Cory | luka_cory@grepp.co | 16384 |
D162 | Cade | Cunningham | cade_cunningham@grepp.co | 8452 |
출력 기대값
ID | FIRST_NAME | LAST_NAME | |
D161 | carsen_garza@grepp.co | Carsen | Garza |
D162 | cade_cunningham@grepp.co | Cade | Cunningham |
D165 | jerami_edwards@grepp.co | Jerami | Edwards |
문제
DEVELOPERS 테이블에서 Front End 스킬을 가진 개발자의 정보를 조회하려 합니다. 조건에 맞는 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요.
결과는 ID를 기준으로 오름차순 정렬해 주세요.
아이디어
- 문제 조건에 친절하게도 BIT에 대한 설명이 나와있다, 비트 연산을 통해 문제를 풀면 된다.
- DEVELOPERS, SKILLCODES 테이블을 SKILL_CODE칼럼과 CODE칼럼을 비트연산 했을때 0이상인 레코드만 추려서 JOIN해준다.
- SKILLCODES의 CATEGORY가 프론트 엔드인 경우를 WHERE절로 추려준다.
- 여기서 부터 예제는 맞지만 제출하면 틀리는 현상이 발생했다.
- 문제 데이터 상에선 중복이 발생하지 않지만, SKILL_CODE와 CODE의 연산이 반복되므로 중복이 발생한다.
- 이를 GROUP BY를 통해 중복을 제거해 주었다.
- 정렬은 ID를 오름차순으로 해주면 된다.
정답
SELECT A.ID, A.EMAIL, A.FIRST_NAME, A.LAST_NAME
FROM DEVELOPERS A
JOIN SKILLCODES B
ON A.SKILL_CODE & B.CODE > 0
WHERE B.CATEGORY = 'Front End'
GROUP BY A.ID, A.EMAIL, A.FIRST_NAME, A.LAST_NAME
ORDER BY A.ID;
참고사항
레코드가 중복될 가능성을 생각해 내기가 어려운 문제였다.
728x90
반응형
'알고리즘 공부 > SQL' 카테고리의 다른 글
[L4] 프로그래머스 ORACLE 그룹별 조건에 맞는 식당 목록 출력하기 (1) | 2024.10.18 |
---|---|
[L3] 프로그래머스 ORACLE 카테고리 별 도서 판매량 집계하기 (1) | 2024.10.18 |
[L4] 프로그래머스 ORACLE 주문량이 많은 아이스크림들 조회하기 (1) | 2024.10.18 |
[L4] 프로그래머스 ORACLE 5월 식품들의 총매출 조회하기 (0) | 2024.10.18 |
[L3] 프로그래머스 ORACLE, MYSQL 오랜 기간 보호한 동물(1) (1) | 2024.10.18 |