일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- dl
- 인공지능
- omtm
- pmf
- Market
- tableau
- 그로스해킹
- 데이터시각화
- 언어지능딥러닝
- 시각화
- 자연어처리
- nlp
- 파인튜닝
- 모델링
- product
- productmarketfit
- DACON
- ERD
- 데이터모델링
- 딥러닝
- 컴퓨터비전
- 데이터분석
- 태블로
- 데이콘
- Computer Vision
- OKR
- fit
- 머신러닝
- Today
- Total
블로그
[Programmers] 276035 - FrontEnd 개발자 찾기 SQL MySQL 본문
https://school.programmers.co.kr/learn/courses/30/lessons/276035
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
비트연산 문제는 몇 번 풀어봤는데
풀 때마다 까먹는다 ... 이젠 진짜 기억 좀 하고 싶어서 블로그에 적어 놓으려고 한다 ㅜ
문제 설명
SKILLCOEDS 테이블은 개발자들이 사용하는 프로그래밍 언어에 대한 정보를 담은 테이블이다.
여기서 CODE는 스킬의 코드를 의미하는데, 2진수로 표현했을 때 각 bit로 구분될 수 있도록 2의 제곱수로 구성되어 있다.
DEVELOPERS 테이블은 개발자들의 프로그래밍 스킬 정보를 담은 테이블이다.
여기서 SKILL_CODE는 개발자의 스킬 코드이다.
만약 어떤 개발자의 SKILL_CODE가 400 (=b'110010000')이면
SKILLCODE 테이블에서 코드가 256 (=b'100000000'), 128 (=b'10000000'), 16 (=b'10000')에 해당하는 스킬을 가졌다는 것을 의미한다.
[ 문제 ]
DEVELOPERS 테이블에서 Front End 스킬을 가진 개발자의 정보를 조회하려 합니다. 조건에 맞는 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요.
결과는 ID를 기준으로 오름차순 정렬해 주세요.
풀이
1) 우선 CATEGORY가 Front End인 스킬의 CODE 추출
2) DEVELOPERS 테이블에서 SKILL_CODE & CODE == CODE인 행들만 추출
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS
WHERE SKILL_CODE & (SELECT SUM(CODE)
FROM SKILLCODES
WHERE CATEGORY = 'Front End')
ORDER BY ID;
비트합 결과가 0이면 거짓, 0이 아니면 참으로 나옴
근데 이 문제는 JOIN 문젠데, JOIN을 안쓰니까 찜찜해서 다른 코드도 찾아봤다.
SELECT DISTINCT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS D
JOIN SKILLCODES S
ON S.CODE = S.CODE & D.SKILL_CODE
WHERE S.CATEGORY LIKE 'Front%'
ORDER BY ID;
CODE = CODE & SKILL_CODE를 하면 가지고 있는 스킬이 여러 개인 경우에 한 사람이 중복 추출되므로
DISTINCT를 사용해 중복을 제거해주어야 한다 !
>> 참고 블로그
https://dev-green.tistory.com/135
[SQL] MySQL에서의 비트연산 / 프로그래머스 Front End 개발자 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/276035 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
dev-green.tistory.com
https://plum-king.tistory.com/128
[MySQL] 프로그래머스 FrontEnd 개발자 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/276035 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
plum-king.tistory.com
'공부' 카테고리의 다른 글
[그로스해킹] Revenue 쪼개보기 실습 excel (1) | 2024.12.06 |
---|---|
[DB] 데이터 모델링 실습 ERD 그리기 (1) | 2024.11.02 |
[Programmers] 131534 - 상품을 구매한 회원 비율 구하기 SQL MySQL (3) | 2024.10.31 |
[Programmers] 133027 - 주문량이 많은 아이스크림들 조회하기 SQL MySQL (3) | 2024.10.31 |
[그로스해킹] AARRR - Referral (2) | 2024.10.30 |