현재 oracle 8i로 작업중에 있습니다.
통계 페이지 추출을 위해 group 처리 하고 실제 테이블과 조인 하는데 이게 갯수가 많아 지면 에러가 발생합니다.
-- tmp 갯수가 많아서 ORA-24344 에러 발생
WITH tmp AS(
select 123 ms_id FROM dual UNION ALL
select 129 ms_id FROM dual UNION ALL
select 100 ms_id FROM dual UNION ALL
select 121 ms_id FROM dual UNION ALL
select 128 ms_id FROM dual UNION ALL
select 120 ms_id FROM dual UNION ALL
select 132 ms_id FROM dual UNION ALL
select 108 ms_id FROM dual UNION ALL
select 102 ms_id FROM dual UNION ALL
select 119 ms_id FROM dual UNION ALL
select 117 ms_id FROM dual UNION ALL
select 125 ms_id FROM dual UNION ALL
select 101 ms_id FROM dual UNION ALL
select 107 ms_id FROM dual UNION ALL
select 130 ms_id FROM dual UNION ALL
select 131 ms_id FROM dual UNION ALL
select 104 ms_id FROM dual UNION ALL
select 105 ms_id FROM dual UNION ALL
select 109 ms_id FROM dual UNION ALL
select 124 ms_id FROM dual UNION ALL
select 122 ms_id FROM dual UNION ALL
select 106 ms_id FROM dual UNION ALL
select 118 ms_id FROM dual UNION ALL
select 111 ms_id FROM dual UNION ALL
select 103 ms_id FROM dual UNION ALL
select 127 ms_id FROM dual UNION ALL
select 1 ms_id FROM dual UNION ALL
select 2 ms_id FROM dual UNION ALL
select 3 ms_id FROM dual UNION ALL
select 4 ms_id FROM dual UNION ALL
select 5 ms_id FROM dual UNION ALL
select 6 ms_id FROM dual UNION ALL
select 7 ms_id FROM dual UNION ALL
select 126 ms_id FROM dual
), tmp2 AS(
select 121 sectors_main_id, 1 emp_id, 10000 base_salary from dual union all
select 109 sectors_main_id, 2 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 3 emp_id, 10000 base_salary from dual union all
select 109 sectors_main_id, 4 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 5 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 6 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 7 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 8 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 9 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 10 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 11 emp_id, 10000 base_salary from dual
)
SELECT
ms_id, COUNT(*) cnt
,NVL(ROUND(percentile_cont(0.25) within group (order by base_salary),0),0) bs_q1
,NVL(ROUND(percentile_cont(0.5) within group (order by base_salary),0),0) bs_median
,NVL(ROUND(percentile_cont(0.5) within group (order by base_salary),0),0) bs_median
FROM tmp2 e, tmp s
where s.ms_id = e.SECTORS_MAIN_ID(+)
GROUP BY ms_id
-- tmp row 수가 적어서 정상
WITH tmp AS(
select 123 ms_id FROM dual UNION ALL
select 129 ms_id FROM dual UNION ALL
select 100 ms_id FROM dual UNION ALL
select 121 ms_id FROM dual UNION ALL
select 128 ms_id FROM dual UNION ALL
select 120 ms_id FROM dual UNION ALL
select 132 ms_id FROM dual UNION ALL
select 108 ms_id FROM dual UNION ALL
select 126 ms_id FROM dual
), tmp2 AS(
select 121 sectors_main_id, 1 emp_id, 10000 base_salary from dual union all
select 109 sectors_main_id, 2 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 3 emp_id, 10000 base_salary from dual union all
select 109 sectors_main_id, 4 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 5 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 6 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 7 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 8 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 9 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 10 emp_id, 10000 base_salary from dual union all
select 121 sectors_main_id, 11 emp_id, 10000 base_salary from dual
)
SELECT
ms_id, COUNT(*) cnt
,NVL(ROUND(percentile_cont(0.25) within group (order by base_salary),0),0) bs_q1
,NVL(ROUND(percentile_cont(0.5) within group (order by base_salary),0),0) bs_median
,NVL(ROUND(percentile_cont(0.5) within group (order by base_salary),0),0) bs_median
FROM tmp2 e, tmp s
where s.ms_id = e.SECTORS_MAIN_ID(+)
GROUP BY ms_id
통계 리스트를 뿌려줘야 하는데 저렇게 나버리니 답이 없네요;;;
로우 불러와서 일일히 처리를 해야 할런지....미치겠네요...ㅋ
처리 방법이 없을 까요 ??? |