inblog logo
|
LHS's Study Space
    SQL문제풀기

    [SQL 문제 풀기] 대장균의 크기에 따라 분류하기 2(301649)

    lhs's avatar
    lhs
    Feb 28, 2025
    [SQL 문제 풀기] 대장균의 크기에 따라 분류하기 2(301649)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/301649
     

    1. 문제 풀이 아이디어

    • RANK() 함수로 내림차순 순위를 매기고 COUNT(*) OVER()로 전체 개수를 구한 후, 비율에 따라 그룹을 나눠 문제를 해결한다.

    2. 나의 정답 코드

    WITH ranks AS ( SELECT id, RANK() OVER (ORDER BY size_of_colony DESC) AS r, COUNT(*) OVER () AS total_count FROM ecoli_data ) SELECT id, CASE WHEN r * 1.0 / total_count <= 0.25 THEN 'CRITICAL' WHEN r * 1.0 / total_count <= 0.5 THEN 'HIGH' WHEN r * 1.0 / total_count <= 0.75 THEN 'MEDIUM' ELSE 'LOW' END AS colony_name FROM ranks ORDER BY id;

    3. 정리

    • RANK() OVER (ORDER BY size_of_colony DESC)를 사용하여 내림차순으로 순위를 매긴다.
    • COUNT(*) OVER ()를 사용하여 전체 개수를 한 번만 계산하여 성능을 개선한다.
    • CASE 문에서 r / total_count의 비율을 기준으로 4개의 등급으로 나눈다.
    • ORDER BY id를 적용하여 결과를 id 기준으로 정렬한다.
    Share article
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리

    LHS's Study Space

    RSS·Powered by Inblog