오라클 질문 드립니다. 0 6 232

by 고쿠 [2020.06.27 19:53:48]


오라클 쿼리를 짜야하는데 방법이 생각이안나 이렇게 질문드립니다.

 

데이터 전체를 1 ~ 20까지 뽑았다면 1 ~ 5까지 하나의 독립된 그룹으로 묶고

나머지 6 ~ 20까지 가지고 6 ~ 10까지 두번째 독립된 그룹으로 묶고

나머지 11 ~ 20까지 가지고 11 ~ 15까지 세번째 독립된 그룹으로 묶고

나머지 16 ~ 20까지 네번째 독립된 그룹으로 묶어서

각각의 그룹을 가지고 그룹안에 데이터를 가지고 다시 가공을 해야하는 문제입니다.

쿼리를 짜다보니 데이터들이 여러 그룹안에 중복이되어 원하는 결과값이 나오질않아

초보적인 질문이지만 어떻게 접근해야 좋을지 답변주시면 감사하겠습니다.

by 춘 [2020.06.28 02:00:02]
WITH t AS
(
SELECT
    LEVEL lv
FROM dual
CONNECT BY LEVEL <= 20
)
SELECT
    lv
    , CEIL(lv / 5) AS gb
FROM t
;

이렇게 그룹을 나눠서 그룹을 구분하는 gb 값을 가지고
데이터를 가공하면 되지 않을까요?

정확히 원하시는 결과물을 예시로 들어주시면 좋을 것 같습니다.

 


by 마농 [2020.06.29 08:07:46]

그룹핑 기준이 명확하게 제시되어야 합니다.
 - 5개 단위로 나누는 것인지?
 - 4개 그룹으로 나누는 것인지?
 - 아니면 다른 기준이 있는 것인지?
그룹을 나누기 위한 정렬 기준도 필요합니다.


by 고쿠 [2020.06.29 13:20:48]

답변 감사합니다.

제가 초보라 설명이 모호한점 죄송합니다.

 

+-----------+---------+--------+---------+
ID    수치1    수치2    수치3    수치4
001    0.12    0.31    0.271    1310    
002    0.13    0.33    0.270    1311
003    0.12    0.30    0.271    1322
004    0.15    0.32    0.272    1311
005    0.12    0.31    0.271    1315
006    0.13    0.32    0.270    1310
+-----------+---------+--------+----------+

조건1)
수치1 <= 0.13 AND 수치2 <= 0.33 AND 수치3 <= 0.270 AND 수치4 <= 1311 

= 002, 006

 

조건2)

수치1 <= 0.15 AND 수치2 <= 0.33 AND 수치3 <= 0.272 AND 수치4 <= 1322

= 001, 002, 003, 004, 005, 006

 

위에 수치에 조건1 수치에 맞는 ID값이 조건2의 수치에도 포함되지만

조건1의 값은 조건2의 값에 포함이되면 안되게 처리해야는 문제입니다.

이런식으로 조건3의 값에는 조건1, 조건2 값이 포함되지않게 카운팅하는 쿼리를

짜고싶은데 힘드네요..


by 마농 [2020.06.29 13:51:34]
-- 기존 질문과 완전 다른 질문이 되어 버렸네요?
SELECT ID
     , 수치1, 수치2, 수치3, 수치4
     , CASE WHEN 수치1 <= 0.13 AND 수치2 <= 0.33 AND 수치3 <= 0.270 AND 수치4 <= 1311 THEN 1
            WHEN 수치1 <= 0.15 AND 수치2 <= 0.33 AND 수치3 <= 0.272 AND 수치4 <= 1322 THEN 2
            WHEN ... THEN 3
            WHEN ... THEN 4
            ELSE 9 END grp
  FROM t
;

 


by 고쿠 [2020.06.29 16:22:10]

제가 이해가 안되서 간략한 설명 부탁드립니다.


by 마농 [2020.06.29 16:47:07]

요청하신 조건에 따라 그룹을 나누어 주는 쿼리입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입