오라클 쿼리 질문드립니다 0 2 803

by 땅떨이 [2018.10.05 15:34:27]


  v$session                                       v$sql

schemaname,                     elasped_time, user_io_wait_time

      A                                      1                    2

      A                                      2                    4

      A                                      24                  22

      B                                       2                    4

      B                                       3                    2

 

 

위와같은 테이블이 있습니다.

v$sql과 v$session같은 딕셔너리 뷰에서 쿼리들에 대한 elapsed_time과 각 통계정보들을 조회하는 쿼리를 작성하고 있습니다.

select se.schemaname,  
round(ratio_to_report(sum(s.elapsed_time)) over()*100, 2 )||'%'as elapsed_time,
round(ratio_to_report(sum(s.user_io_wait_time)) over()*100, 2)||'%' as user_io_wait_time
from v$session se, v$sql s
group by se.schemaname;

 

이런식으로 쿼리를 짯는데, ratio_ti_report()함수안에 다른컬럼값의 sum값을 넣어도

elapsed_time 컬럼과 user_io_wait_time 컬럼의 값이 같게 나옵니다...

 

원하는 건 v$sql에 있는 통계정보들을 v$session의 schemaname별로 합계를 구한뒤 그 합계들이 전체 합중에

어떤 비율을 가지고있는지 에 대한 쿼리를 원하는데, 아직 모르는게 너무 많습니다 ㅠㅠ

by 마농 [2018.10.05 16:38:07]
SELECT se.schemaname
     , SUM(s.cpu_time    ) cpu_time_sum
     , SUM(s.elapsed_time) elapsed_time_sum
     , ROUND(RATIO_TO_REPORT(SUM(s.cpu_time    )) OVER()*100, 2)||'%' AS cpu_time_rat
     , ROUND(RATIO_TO_REPORT(SUM(s.elapsed_time)) OVER()*100, 2)||'%' AS elapsed_time_rat
  FROM v$session se
     , v$sql     s
 WHERE se.sql_id = s.sql_id    -- 조인 조건 누락
 GROUP BY se.schemaname
;

 


by 땅떨이 [2018.10.05 16:44:13]

아... 제일중요한게 빠졌엇네요..

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