티스토리 뷰

프로그래머스 SQL 고득점 kit 5일차( SELECT level3-3문제, level 3 끝!, level4-2문제)

 

1. 조건문 CASE

- 순차적으로 위에서부터 계산하여 조건을 만족하지 않은 행만 다음 조건으로 넘어간다.(중복적용 x)

CASE
    WHEN 조건1 THEN 결과1
    WHEN 조건2 THEN 결과2
    ...
    ELSE 기본결과
END AS 별칭(필요시)

 

2. 윈도우 함수

- 특정 그룹(WINDOW) 내에서 각 행에 대해 연산을 수행하는 함수

- OVER : 윈도우 함수를 쓸 때 반드시 필요하며, 특정 그룹을 정의하거나 데이터를 정렬할 때 사용

- 행과 관련된 데이터를 계산하면서도 원본 행을 유지

 

1) PERCENTE RANK

- 데이터의 백분율 순위 → 0~1사이의 값을 반환

PERCENT_RANK() OVER (PARTITION BY 파티션_기준 ORDER BY 정렬_기준 ASC|DESC)

 

2) NTILE

- 데이터를 균등하게 N개로 나눔   1 ~ N 구간번호를 반환

NTILE(N) OVER (PARTITION BY 파티션_기준 ORDER BY 정렬_기준 ASC|DESC)

 

3. 문제 풀이 비교

1) PERCENT RANK

SELECT ID, 
    CASE
        WHEN PERCENT_RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) <=0.25 THEN 'CRITICAL'
        WHEN PERCENT_RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) <=0.50 THEN 'HIGH'
        WHEN PERCENT_RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) <=0.75 THEN 'MEDIUM'
        ELSE 'LOW'
    END AS COLONY_NAME
FROM ECOLI_DATA
ORDER BY ID

 

2) NTILE

SELECT 
    ID,
    SIZE_OF_COLONY,
    CASE 
        WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) = 1 THEN 'CRITICAL'
        WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) = 2 THEN 'HIGH'
        WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) = 3 THEN 'MEDIUM'
        ELSE 'LOW'
    END AS COLONY_NAME
FROM ECOLI_DATA
ORDER BY ID;

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함