프로그래머스문제풀이 10

프로그래머스: 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 - 시도 및 해결 과정 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 X HR_EMPLOYEES 👉🏻 사번, 사원명, 보너스 조회 HR_GRADE 👉🏻 평가 등급 조회 평가 점수별 등급과 성과금 정보에 따른 값 계산하기 사번 ASC 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP HR_GRADE AS GR 4. 나의 시도 시도 1) 테이블 DEPT은 조회할 컬럼이 없으니 제외하고, 테이블 EMP와 테이블 GR은 ‘사번’이라는 동일한 컬럼을 가지고 있으니 INNER JOIN을 해준다. SELECT FROM HR_EMPLOYEES AS EMP INNER JOIN HR_GRADE AS GR ON EMP.EMP_NO = GR.EMP_NO 시도 2) 아래는 ‘평가 점수별 등급과 ..

Skills/SQL 2024.03.13

프로그래머스: 부서별 평균 연봉 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 부서 ID, 영문 부서명 조회 HR_EMPLOYEES 👉🏻 평균 연봉 조회 평균 연봉은 소수점 첫째 자리에서 반올림하기 부서별 평균 연봉 DESC 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP 4. 풀이 과정 1단계) 두 테이블을 연결하여 부서별 평균 연봉을 알아보아야 하니 부서 ID를 기준으로 INNER JOIN을 적용해 줍니다. SELECT FROM HR_DEPARTMENT AS DEPT INNER JOIN HR_EMPLOYEES AS EMP ON DEPT.DEPT_ID = EMP.DEPT_ID 2단계) 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SELECT문을 작성해 준다. AVG() 함수..

Skills/SQL 2024.03.13

프로그래머스: 업그레이드 할 수 없는 아이템 구하기 (MySQL)

1. 문제 2. 문제 풀기 전 생각해 볼 것 ITEM_INFO 👉🏻 아이템 ID, 아이템 명, 희귀도 조회 ITEM_TREE 👉🏻 (서브 쿼리를 이용할 때) PARENT 아이템 ID 조회 더 이상 업그레이드 할 수 없는 아이템이어야 함 아이템 ID DESC 3. 테이블 ITEM_INFO ITEM_TREE 4. 풀이 과정 (LEFT JOIN 사용) 1단계) '두 테이블을 이용하여 더 이상 업그레이드 할 수 없는 아이템'을 조회하기 위해, 교집합을 보여주는 INNER JOIN 말고 다른 것을 생각해 볼 필요가 있다. ITEM_INFO 테이블을 기준으로 아이템들의 업그레이드 전을 보아야 하니 LEFT JOIN을 해 준다. 아래의 출력값을 보면 업그레이드가 가능한 아이템 리스트를 볼 수 있는데, 여기서 아이템 ..

Skills/SQL 2024.03.13

프로그래머스: 노선별 평균 역 사이 거리 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, SUBWAY_DISTANCE 👉🏻 노선, 총 누계 거리, 평균 역 사이 거리 조회 1) 노선 별 그룹화 2) 총 누계 거리는 소수 둘째 자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 3) ‘km’ 단위 붙이기 총 누계 거리 DESC 문자열을 합체 및 연결해 주는 CONCAT 함수 생각하기 3. 테이블 SUBWAY_DISTANCE 4. 풀이 과정 1단계) 총 누계 거리는 역 사이의 거리의 총합을 의미하는데, SUM() 함수를 이용하여 총합을 계산해 준다. 그리고 AVG() 함수를 이용하여 평균 역 사이의 거리를 계산해 준다. 계산한 두 값은 ROUND() 함수를 이용하여 소수 둘째 자리와 소수 셋째 자리에서 반올림 해준다. SELECT ROUTE, ROUND(..

Skills/SQL 2024.03.12

프로그래머스: ROOT 아이템 구하기 (MySQL)

1. 문제 2. 문제 풀기 전에, ITEM_INFO 👉🏻 아이템 ID, 아이템 명 조회 ITEM_TREE 👉🏻 X ROOT 아이템 조회하기 아이템 ID ASC 3. 테이블 ITEM_INFO AS INFO ITEM_TREE AS TREE 4. 풀이 과정 1단계) 테이블 INFO와 테이블 TREE가 공통으로 가지고 있는 컬럼인 ITEM_ID를 이용하여 INNER JOIN을 해준다. SELECT FROM ITEM_INFO AS INFO INNER JOIN ITEM_TREE AS TREE ON INFO.ITEM_ID = TREE.ITEM_ID 2단계) ‘PARENT 아이템이 없는 아이템을 ROOT 아이템’이기 때문에, IS NULL을 이용하여 PARENT_ITEM_ID 컬럼에서 NULL 값을 조회하는 WHERE..

Skills/SQL 2024.03.09

프로그래머스: 조건에 맞는 개발자 구하기 (MySQL)

1. 문제 2. 문제 풀기 전에, DEVELOPERS 👉🏻 개발자 ID, 이메일, 이름, 성 조회 SKILLCODES 👉🏻 스킬의 코드 조회 Python 혹은 C# 스킬을 가진 개발자여야 함 ID ASC &, |, ^와 같은 비트 연산자에 대한 개념 생각하기 3. 테이블 SKILLCODES DEVELOPERS 4. 풀이 과정 1단계) 개발자의 ID, 이메일, 이름, 성을 조회하는 SELECT문을 작성해 준다. SELECT ID, EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPERS 2단계) 어떤 개발자의 SKILL_CODE가 400(=b'110010000')이라면, 이는 SKILLCODES 테이블에서 CODE가 256(=b'100000000'), 128(=b'10000000')..

Skills/SQL 2024.03.08

프로그래머스: 업그레이드 된 아이템 구하기 (MySQL)

1. 문제 2. 문제 풀기 전에, 부모와 자식의 관계 생각하기 👉🏻 업그레이드 전=PARENT, 업그레이드 후=CHILD ITEM_INFO 👉🏻 아이템 ID, 아이템 명, 아이템 희귀도 조회 ITEM_TREE 👉🏻 X 희귀도가 ‘RARE’인 아이템 조회 아이템 ID DESC 3. 테이블 ITEM_INFO ITEM_TREE 4. 풀이 과정 1단계) ITEM_INFO는 업그레이드 전 아이템을 설명한 테이블이고, ITEM_TREE는 아이템의 업그레이드 가능 여부를 보여주는 테이블이다. ITEM_INFO의 아이템 ID와 ITEM_TREE의 PARENT 아이템 ID를 연결하면 업그레이드 전의 아이템을 조회할 수 있으니 INNER JOIN을 해준다. 여기서 ITEM_INFO 는 ‘PARENT(부모)’로 정의하였다...

Skills/SQL 2024.03.07

프로그래머스: 없어진 기록 찾기 (MySQL)

1. 문제 2. 문제 풀기 전에, ANIMAL_INS 👉🏻 X ANIMAL_OUTS 👉🏻 동물 ID, 이름 조회 입양을 간 기록은 있지만, 보호소에 들어온 기록이 없는 동물 조회 동물 ID ASC JOIN의 종류와 그 개념 생각하기 3. 테이블 ANIMAL_INS AS I ANIMAL_OUTS AS O 4. 풀이 과정 1단계) 먼저 테이블 I와 테이블 O를 이용하여 쿼리문을 작성하기 위해 JOIN을 해줘야 하는데, 이번에는 조금 다르게 생각해 볼 필요가 있다. 👨🏻‍🏫 INNER JOIN은 테이블들을 연결할 때 기본적으로 가장 많이 사용되는 형태이다. ‘보호소에 들어온 기록은 없지만, 입양을 간 기록은 있는’ 동물을 찾아야 하는데, '입양 간 기록 테이블 - 보호소 들어온 기록 테이블'로 계산이 가능하다..

Skills/SQL 2024.03.04

프로그래머스: 저자 별 카테고리 별 매출액 집계하기 (MySQL)

1. 문제 2. 문제 풀기 전에, BOOK 👉🏻 저자 ID, 카테고리, 판매가 조회 AUTHOR 👉🏻 저자명 조회 BOOK_SALES 👉🏻 판매량 조회 2022년 1월 도서 판매 데이터여야 함 저자 ID, 카테고리 ASC ※ 여기서 (판매가*판매량)을 계산하여 TOTAL_SALES 컬럼 추가해야 함 3. 테이블 BOOK AS B AUTHOR AS A BOOK_SALES AS BS 4. 풀이 과정 1단계) 세 테이블에 포함된 컬럼을 동시에 조회해야 하니 INNER JOIN을 해준다. SELECT FROM BOOK AS B INNER JOIN AUTHOR AS A ON B.AUTHOR_ID = A.AUTHOR_ID INNER JOIN BOOK_SALES AS BS ON B.BOOK_ID = BS.BOOK_I..

Skills/SQL 2024.03.03

프로그래머스: 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (MySQL)

1. 문제 2. 문제 풀기 전에, CAR_RENTAL_COMPANY_CAR 👉🏻 자동차 ID, 자동차 종류 조회 CAR_RENTAL_COMPANY_RENTAL_HISTORY (WHERE절 작성 시 필요), CAR_RENTAL_COMPANY_DISCOUNT_PLAN (서브쿼리 작성 시 필요) 1) 자동차의 종류가 '세단 또는 'SUV' 2) 2022/11/1~2022/11/30 대여 가능 3) 50만원 =< 30일 대여금액 '2022-11-01' AND START_DATE < '2022-12-01') GROUP BY C.CAR_ID 4단계) '세단' 또는 'SUV'이며 ‘30일간의 대여 금액이 50만원 이상 200만원 미만’인 자동차를 조회하기 위해 HAVING절을 이용해 준다. SELECT C.CAR_I..

Skills/SQL 2024.03.02