250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SQL
- 코테준비
- 파이썬
- 프로그래머스문풀
- 서브쿼리
- with절
- sql50
- 파이썬문풀
- 티스토리챌린지
- 위키독스
- leetcode
- 약수구하기
- 프로그래머스
- 데이터리안넥스트레벨챌린지
- 윈도우함수
- 데이터리안실전반
- 문풀
- levle1
- 셀프조인
- 데벨챌
- 그로스해킹
- SQL테스트
- leetcode문풀
- SQL고득점KIT
- sql문풀
- 활성사용자수
- mysql
- join
- 오블완
- 데이터리안
Archives
- Today
- Total
꿈은 데이터분석가, 취미는 계획
[MY SQL] 크기를 기준으로 비율별 그룹(등급) 만들기 본문
728x90
출처: [프로그래머스 스쿨 - 코딩테스트 연습 - MY SQL 문제] : 대장균의 크기에 따라 분류하기
링크: https://school.programmers.co.kr/learn/courses/30/lessons/301649
문제(일부): 개체의 크기를 내림차순으로 정렬했을 때 0% ~ 25% 를 'CRITICAL', 26% ~ 50% 를 'HIGH', 51% ~ 75% 를 'MEDIUM', 76% ~ 100% 를 'LOW' 라고 분류
1. 윈도우 함수 PERCENT_RANK활용하기
1) WITH절에서 PERCENT_RANK를 사용하여 행별 백분율을 표현
2) CASE구문으로 등급을 부여
WITH A AS (
SELECT ID,PERCENT_RANK() OVER(ORDER BY SIZE_OF_COLONY DESC) AS SIZE_PER
FROM ECOLI_DATA)
SELECT ID
, CASE
WHEN SIZE_PER <= 0.25 THEN 'CRITICAL'
WHEN SIZE_PER <= 0.50 THEN 'HIGH'
WHEN SIZE_PER <= 0.75 THEN 'MEDIUM'
ELSE 'LOW'
END COLONY_NAME
FROM A
ORDER BY ID
2. 윈도우 함수 NTILL 활용하기
1) 전체 데이터를 N개로 동일하게 분할하는 NTILL함수 활용하여 25%씩 분할
2) 분할된 수에 따라 등급 부여
SELECT ID
, CASE
WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY ) = 1 THEN 'LOW'
WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY ) = 2 THEN 'MEDIUM'
WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY ) = 3 THEN 'HIGH'
ELSE 'CRITICAL'
END AS COLONY_NAME
FROM ECOLI_DATA
ORDER BY ID
728x90
'SQL > SQL문풀' 카테고리의 다른 글
[MY SQL] 특정 그룹에서 가장 비싼 제품의 정보 가져오기 (0) | 2024.04.16 |
---|---|
[MY SQL] 부모,자식관계를 업그레이드 아이템으로 이해하기 (0) | 2024.04.14 |
[MY SQL] 가장 큰 값을 기준으로 편차 구하기 (0) | 2024.04.08 |
[MY SQL] 문자열 결합함수 CONCAT과 CONCAT_WS 차이 (0) | 2024.04.08 |
[MY SQL] 2개 테이블로 조건에 맞는 사람 찾기 (0) | 2024.04.06 |