프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
DEVELOPERS 테이블에서 Front End 스킬을 가진 개발자의 정보를 조회하려 합니다. 조건에 맞는 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요.
결과는 ID를 기준으로 오름차순 정렬해 주세요.
-- S: ID, EMAIL, FIRST_NAME, LAST_NAME
-- F: DEVELOPERS & SKILLCODES
-- W: Front End 스킬 보유
-- O: ID ASC
SELECT DISTINCT D.ID, D.EMAIL, D.FIRST_NAME, D.LAST_NAME
FROM DEVELOPERS D LEFT JOIN
(SELECT *
FROM SKILLCODES
WHERE CATEGORY = 'Front End') F ON D.SKILL_CODE & F.CODE
WHERE F.CODE IS NOT NULL
ORDER BY D.ID
NOTE: JOIN의 ON에서 비트연산을 사용하여 Front End 스킬을 가진 개발자만 불러오기
중요) ID가 중복으로 불러와질 수 있으므로 DISTINCT 사용
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.
-- S: YEAR, MONTH, PURCHASED_USERS, PURCHASED_RATIO(소수점 둘째자리에서 반올림)
-- F: USER_INFO & ONLINE_SALE
-- W: 2021년에 가입
-- O: YEAR ASC, MONTH ASC
SELECT YEAR(O.SALES_DATE) YEAR, MONTH(O.SALES_DATE) MONTH,
COUNT(DISTINCT O.USER_ID) PURCHASED_USERS,
ROUND(COUNT(DISTINCT O.USER_ID) /
(SELECT COUNT(USER_ID) FROM USER_INFO WHERE YEAR(JOINED) = '2021'), 1) PURCHASED_RATIO
FROM ONLINE_SALE O LEFT JOIN USER_INFO U ON O.USER_ID = U.USER_ID
WHERE YEAR(U.JOINED) = '2021'
GROUP BY YEAR(O.SALES_DATE), MONTH(O.SALES_DATE)
NOTE: 2021년에 가입한 회원 수는 고정 -> 서브쿼리화 해서 PURCHASED_RATIO의 분모로 사용
년, 월별로 구매 회원을 그룹화하되 + 2021년 가입 여부 확인
구매 회원 ID는 중복 가능하므로 DISTINCT 사용
'코딩테스트' 카테고리의 다른 글
25/05/08 프로그래머스 SQL 고득점 Kit (0) | 2025.05.08 |
---|---|
25/04/30 프로그래머스 SQL 고득점 Kit (0) | 2025.04.30 |
25/04/27 프로그래머스 SQL 고득점 Kit (0) | 2025.04.27 |