CODING TEST/PROGRAMMERS

[SQL Lv.3] 프로그래머스 SQL Level 3 문제 정답 (대장균 크기에 따라 분류하기 2, 대장균 크기에 따라 분류하기 1, 대장균들의 자식의 수 구하기, 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기, 물고기 종류 별 대어 찾기, 부서별 평균 연봉 조회하기)

개발자 만두 2025. 4. 14. 17:38
728x90
반응형

모든 문제는 MySQL로 풀이했습니다 ❕

오늘의 문제 6개는 아래와 같습니다 ⤵️

오늘의 문제 6개

 

1. 대장균 크기에 따라 분류하기 2

🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/301649

 

⌨️ 작성한 쿼리문 (MySQL)

WITH COLONY_RANK AS (
    SELECT ID, (RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) * 100.0 
                / (SELECT COUNT(*) FROM ECOLI_DATA)) RANK_OF_COLONY
    FROM ECOLI_DATA
)
    
SELECT ID, CASE
            WHEN RANK_OF_COLONY <= 25 THEN 'CRITICAL'
            WHEN RANK_OF_COLONY > 25 AND RANK_OF_COLONY <= 50 THEN 'HIGH'
            WHEN RANK_OF_COLONY > 50 AND RANK_OF_COLONY <= 75 THEN 'MEDIUM'
            ELSE 'LOW'
           END AS COLONY_NAME
FROM COLONY_RANK
ORDER BY ID

 

2. 대장균 크기에 따라 분류하기 1

🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/299307

 

⌨️ 작성한 쿼리문 (MySQL)

SELECT ID, CASE
              WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
              WHEN SIZE_OF_COLONY > 100 AND SIZE_OF_COLONY <= 1000 THEN 'MEDIUM'
              ELSE 'HIGH'
           END AS SIZE
FROM ECOLI_DATA
ORDER BY ID

 

3. 대장균들의 자식의 수 구하기

🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/299305

 

⌨️ 작성한 쿼리문 (MySQL)

SELECT A.ID, COUNT(B.PARENT_ID) CHILD_COUNT
FROM ECOLI_DATA A LEFT JOIN ECOLI_DATA B ON A.ID = B.PARENT_ID
GROUP BY A.ID
ORDER BY A.ID

 

4. 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/298519

 

⌨️ 작성한 쿼리문 (MySQL)

SELECT COUNT(*) FISH_COUNT, MAX(COALESCE(LENGTH, 10)) MAX_LENGTH, FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(COALESCE(LENGTH, 10)) >= 33
ORDER BY FISH_TYPE

 

5. 물고기 종류 별 대어 찾기

🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/293261

 

⌨️ 작성한 쿼리문 (MySQL)

SELECT A.ID, B.FISH_NAME, A.LENGTH
FROM FISH_INFO A INNER JOIN FISH_NAME_INFO B ON A.FISH_TYPE = B.FISH_TYPE
WHERE (A.FISH_TYPE, A.LENGTH) IN (
        SELECT FISH_TYPE, MAX(LENGTH)
        FROM FISH_INFO
        GROUP BY FISH_TYPE
        )
ORDER BY ID

 

6. 부서별 평균 연봉 조회하기

🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/284529

 

⌨️ 작성한 쿼리문 (MySQL)

SELECT B.DEPT_ID, A.DEPT_NAME_EN, ROUND(AVG(SAL)) AVG_SAL
FROM HR_DEPARTMENT A INNER JOIN HR_EMPLOYEES B ON A.DEPT_ID = B.DEPT_ID
GROUP BY B.DEPT_ID
ORDER BY AVG_SAL DESC

 

쿼리문에 대해 이해 안 가거나

궁금한 내용이 있으신 분은 댓글 남겨주세요!

감사합니다 🤓

 

728x90
반응형