데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
쿼리 질문 좀 부탁드리겠습니다.
아래와 같은 결과를 얻고 싶습니다.
RANKING | CUME_DIST ( % ) | POINT | MAX | MIN |
1 | 0.03 | 100 | 100 | 90 |
2 | 0.06 | 91 | 100 | 90 |
3 | 0.1 | 90 | 100 | 90 |
4 | 0.13 | 89 | 89 | 87 |
5 | 0.16 | 88 | 89 | 87 |
6 | 0.19 | 87 | 89 | 87 |
7 | 0.23 | 86 | 86 | 81 |
조회된 데이터는 RANKING, CUME_DIST, POINT 만 있고,
MAX,MIN 값을 만들고 싶습니다.
1. CUME_DIST 가 0.1 (10%) 이하면, 이 구간 최상위값과 최하위값만 나와야 합니다.
2. 10% 과 같이 20% 구간도 최상위 값과 최하위 값만 나와야 합니다.
고수님들의 의견 부탁드리겠습니다.
Comment 1
-
건우아빠
2019.10.10 14:59
WITH RES AS(select 1 RANKING ,0.03 CUME_DIST,100 POINT UNION ALLselect 2 RANKING,0.06 CUME_DIST,91 POINT UNION ALLselect 3 RANKING,0.1 CUME_DIST,90 POINT UNION ALLselect 4 RANKING,0.13 CUME_DIST,89 POINT UNION ALLselect 5 RANKING,0.16 CUME_DIST,88 POINT UNION ALLselect 6 RANKING,0.19 CUME_DIST,87 POINT UNION ALLselect 7 RANKING,0.23 CUME_DIST,86 POINT ) ,RES_AREAAS (SELECT CEILING(CUME_DIST * 100 / 10 ) CUME_DIST_AREA , MAX(POINT) POINT_MAX , MIN(POINT) POINT_MINFROM RESGROUP BY CEILING(CUME_DIST * 100 / 10 ) )SELECT *FROM RES A JOIN RES_AREA B ON CEILING(A.CUME_DIST * 100 / 10 ) = B.CUME_DIST_AREAORDER BY A.RANKING