쿼리테스트 14

프로그래머스: 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 - 시도 및 해결 과정 (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

프로그래머스: 연도별 평균 미세먼지 농도 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전 생각해 볼 것 AIR_POLLUTION 👉🏻 연도, 평균 미세먼지 오염도, 초미세먼지 오염도 조회 1) 수원 지역으로 한정하기 2) 연도 별 그룹화하기 3) 평균 미세먼지, 초미세먼지 오염도는 소수 셋째 자리에서 반올림 YEAR ASC 값을 반올림하여 출력해 주는 ROUND 함수의 개념과 작성 방식 생각하기 3. 테이블 AIR_POLLUTION 4. 풀이 과정 1단계) 특정 지역으로 한정해서 조회를 해야 하니 WHERE절을 통해 ‘수원’만 조회하는 조건을 추가해 준다. SELECT FROM AIR_POLLUTION WHERE LOCATION2 = '수원' 2단계) YEAR()함수를 이용하여 컬럼 YM에서 연도만 추출해 준다. 그리고 AVG() 함수를 통해 미세먼지와 초미세먼..

Skills/SQL 2024.03.12

프로그래머스: 조건에 맞는 사원 정보 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 X HR_EMPLOYEES 👉🏻 사번, 성명, 직책, 이메일 HR_GRADE 👉🏻 점수 합계 상, 하반기 접수 합계가 가장 높은 사원 정보 조회하기 점수 합계 DESC (=점수 높은 순으로) 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP HR_GRADE AS GR 4. 풀이 과정 1단계) 테이블 DEPT와 테이블 EMP는 DEPT_ID라는 공통 컬럼을 가지고 있고, 테이블EMP와 테이블 GR은 EMP_NO라는 공통 컬럼을 가지고 있다. 이 세 테이블을 연결하여 쿼리문을 작성해야 하니 INNER JOIN을 해준다. SELECT FROM HR_DEPARTMENT AS DEPT INNER JOIN HR_E..

Skills/SQL 2024.03.09

프로그래머스: 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. 문제 풀기 전에, FIRST_HALF 👉🏻 아이스크림 맛 조회 JULY 👉🏻 X 7월 + 상반기 아이스크림 총 주문량 상위 3개 조회 7월 + 상반기 아이스크림 총 주문량 DESC 데이터 갯수를 제한하는 LIMIT 함수와 데이터의 합계를 계산하는 SUM 함수 생각하기 3. 테이블 FIRST_HALF AS F JULY AS J 4. 풀이 과정 1단계) 두 테이블 모두 FLAVOR 컬럼을 동일하게 가지고 있으니 이를 기준으로 INNER JOIN을 해준다. SELECT FROM FIRST_HALF F INNER JOIN JULY AS J ON F.FLAVOR = J.FLAVOR 2단계) 아이스크림 맛을 조회하는 SELECT문을 작성해 준다. SELECT F.FLAVOR FROM FIRST_HA..

Skills/SQL 2024.03.05