SELECT
업그레이드 된 아이템 구하기(Lv2)
문제 설명
문제
아이템의 희귀도가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬주세요.
풀이
SELECT로 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY) 를 조회
JOIN에서 ITEM_INFO, ITEM_TREE를 공통 컬럼인 ITEM_ID로 연결
WHERE에서 희귀도가 RARE인 ITEM_ID이 PARENT_ID에 있는 것으로 제한
ORDER BY에서 ITEM_ID 순으로 내림차순 정렬
SELECT I.ITEM_ID
,I.ITEM_NAME
,I.RARITY
FROM ITEM_TREE T
JOIN ITEM_INFO I ON T.ITEM_ID = I.ITEM_ID
WHERE T.PARENT_ITEM_ID IN (
SELECT ITEM_ID
FROM ITEM_INFO
WHERE RARITY = 'RARE'
)
ORDER BY I.ITEM_ID DESC;
잔챙이 잡은 수 구하기(Lv1)
문제 설명
문제
풀이
SELECT로 COUNT를 조회
WHERE에서 LENGTH가 NULL인 것으로 제한 (10cm 이하는 NULL이기 때문!)
SELECT COUNT(*) FISH_COUNT
FROM FISH_INFO
WHERE LENGTH IS NULL;
GROUP BY
★언어별 개발자 분류하기 (Lv4)
문제 설명
문제
풀이
SELECT에서 점수, 사번, 성명, 직책, 이메일 을 조회
JOIN에서 HR_EMPLOYEES와 HR_GRADE를 공통 컬럼인 EMP_NO로 연결
WHERE에서 연도를 2022년으로 제한
GROUP BY에서 EMP_NO로 그룹화 (상, 하반기 점수를 합하기 위해서)
ORDER BY에서 SCORE를 내림차순 정렬하고 LIMIT 1을 걸면 최고 점수를 가진 사원 조회 가능!
# 동점자 고려X 버전
SELECT SUM(SCORE) SCORE, E.EMP_NO, EMP_NAME, POSITION, EMAIL
FROM HR_EMPLOYEES E
JOIN HR_GRADE G ON G.EMP_NO = E.EMP_NO
WHERE G.YEAR = 2022
GROUP BY G.EMP_NO
ORDER BY SCORE DESC
LIMIT 1;
WITH에서 RANKSCORE는 상하반기 합산 점수, 점수에 따라 랭크를 매긴 것을 저장
본 쿼리에서는 RANKSCORE 에서 RN=1인 즉 최고 점수의 사원들(동점자들을 고려한)을 조회 가능!
WITH RANKSCORE AS (
SELECT EMP_NO, SUM(SCORE) SCORE, RANK() OVER (ORDER BY SUM(SCORE) DESC) RN
FROM HR_GRADE
WHERE YEAR = 2022
GROUP BY EMP_NO
)
SELECT SCORE, EMP_NO, EMP_NAME, POSITION, EMAIL
FROM HR_EMPLOYEES E
JOIN RANKSCORE R USING (EMP_NO)
WHERE RN = 1;
두 버전으로 나눠서 기록은 했지만, 밑에 있는 RANK를 사용한 버전이 동점자를 고려한 버전이므로 문제가 요구한 2022년 평가 점수가 가장 높은 사원들이라는 요구에 조금 더 적절하다고 생각합니다
String, Date
중성화 여부 파악하기(Lv2)
문제 설명
문제
풀이
SELECT에서 동물의 아이디와 이름, 중성화 여부를 조회
여기서 중성화 여부는 CASE WHEN을 이용하여 'Neutered' 나 'Spayed'가 포함되면 O, 나머지는 X로 처리
ORDER BY에서 ANIMAL_ID를 오름차순 정렬
SELECT ANIMAL_ID, NAME,
CASE
WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
'SQL > 프로그래머스' 카테고리의 다른 글
프로그래머스 | SQL 스터디 15 (SUBSTIRNG) (2) | 2024.09.17 |
---|---|
프로그래머스 | SQL 스터디 14 (Union, Union all) (3) | 2024.09.16 |
프로그래머스 | SQL 스터디 12 (0) | 2024.09.15 |
프로그래머스 | SQL 스터디 11 (비트연산자 &) (1) | 2024.09.11 |
프로그래머스 | SQL 스터디 10 (2) | 2024.09.10 |