오라클에서 group by 된 쿼리에서 조건에 따라서 걸러진 최대값 최소값을 구하고 싶습니다. 0 2 3,019

by 야근냥 [SQL Query] ORACLE SQL GROUP [2021.02.04 09:55:27]


오라클에서 group by 된 쿼리에서 조건에 따라서 걸러진 최대값 최소값을 구하고 싶습니다.

ex)

SELECT    COL1
,    COL2
,    SUM(COL3)
,    --구하고 싶은값 : 그룹바이 내에서 날자정보가 들어있는 COL6가 가장 최근값일때의 COL4
,    --구하고 싶은값 : 그룹바이 내에서 날자정보가 들어있는 COL7가 가장 오래된값일때의 COL5
FROM    TABEL1 T1
,    TABEL2 T2
WHERE    T1.KEY = T2.KEY
GROUP BY     COL1    
,        COL2        

주석부분이 제가 해결못하는 부분입니다. 현재는 서브쿼리를 통해서 비교문을 구하거나
전체를 한번더 싸서 새로운 제2, 제3의 인라인뷰를 만들어서 구하고 있습니다. 

그렇게되니 쿼리를 중첩으로 2중3중으로 싸게되어 매우 지저분하게 되었습니다.

"GROUP BY "를 하더라도 그 내에서 집계함수를 사용하듯 쉽고 간결하게 사용하고 싶습니다.
하지만 도무지 여러방면으로 시도해보고 찾아보아도 알수가 없었기에 질문 남깁니다.


저런 데이터를 구하고 싶을때는 스칼라를 통해 구하는게 최선의 방법인지 
혹은 선배님들 , 후배님들은 다른 더 좋은 방식을 알고 계신지 궁금하여 질문남깁니다. 

작은 아이디어도 감사히 받겠습니다. 
 

by 샤랄라 [2021.02.04 11:20:37]
SELECT COL1
     , COL2
     , SUM(COL3)
     , MAX(COL4) KEEP(DENSE_RANK LAST ORDER BY COL6) 
     , MAX(COL5) KEEP(DENSE_RANK FIRST ORDER BY COL7) 
FROM TABEL1 T1
   , TABEL2 T2
WHERE T1.KEY = T2.KEY
GROUP BY COL1, COL2 ; 

 


by 야근냥 [2021.02.04 13:03:04]

감사드립니다. 덕분에 도움이 많이 되었습니다. 

2021년에도 좋은일만 가득하시길 바라겠습니다.

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