by 무뚝이 [SQL Query] cartesian곱 group by [2013.07.16 16:32:44]
작업할ID | 실제작업ID | 구분1 | 구분2 |
A | A | C | 20121231 |
A | B | C | 20121231 |
A | A | C | 20121231 |
B | B | C | 20121231 |
A | A | D | 20120630 |
구분1 | 구분2 | 실제작업ID | 실제작업ID갯수(1) | 작업할ID | 작업할ID갯수(2) | 비율((1)/(2)) * 100 |
C | 20121231 | A | 2 | A | 3 | 66.66666667 |
D | 20120630 | A | 1 | A | 1 | 100 |
C | 20121231 | B | 2 | B | 1 | 200 |
SELECT 구분1 -- 구분2는 max로 할껀지 min으로 할껀지 group by 에 포함시킬껀지. , 구분2 , DECODE ( lv, 1, 실제작업ID, 2, 작업할ID ) 실제작업ID , COUNT ( DECODE ( lv, 1, 1 )) 실제작업ID갯수 , DECODE ( lv, 1, 실제작업ID, 2, 작업할ID ) 작업할ID , COUNT ( DECODE ( lv, 2, 1 )) 작업할ID갯수 , COUNT ( DECODE ( lv, 1, 1 )) / NVL ( COUNT ( DECODE ( lv, 2, 1 )), 0, NULL ) * 100 비율 FROM t , ( SELECT level lv FROM dual CONNECT BY LEVEL <= 2 ) GROUP BY DECODE ( lv, 1, 실제작업ID, 2, 작업할ID ) , 구분1 , 구분2