박스2의 데이터를 만들어 내야는데요
이걸 어떻게 해야할지 모르겠습니다. 음 제가 생각해본바로는 강아지와 고양이의 그룹으로
즉 이전 그룹의 최대값을 가지고 와서 BOX1의값+이전그룹최대값으로 더하면 될 듯해서
LAG()를 써서 가져올려 해보았으나 힘드네요...
도움 부탁드립니다. DB책을 사서 공부하는데 저런 문제가 있어서요
이름 | LV1 | LV2 | LV3 | EA | BOX1 | BOX2 |
강아지 | 1 | 1 | 1 | 30 | 1 | 1 |
강아지 | 1 | 2 | 2 | 60 | 1 | 1 |
강아지 | 1 | 3 | 3 | 90 | 2 | 2 |
강아지 | 1 | 4 | 4 | 120 | 2 | 2 |
강아지 | 1 | 5 | 5 | 150 | 3 | 3 |
강아지 | 1 | 6 | 6 | 180 | 3 | 3 |
강아지 | 1 | 7 | 7 | 210 | 4 | 4 |
강아지 | 1 | 8 | 8 | 240 | 4 | 4 |
강아지 | 1 | 9 | 9 | 270 | 5 | 5 |
강아지 | 1 | 10 | 10 | 300 | 5 | 5 |
고양이 | 2 | 1 | 11 | 2 | 1 | 6 |
고양이 | 2 | 2 | 12 | 4 | 1 | 6 |
고양이 | 2 | 3 | 13 | 6 | 1 | 6 |
고양이 | 2 | 4 | 14 | 8 | 2 | 7 |
고양이 | 2 | 5 | 15 | 10 | 2 | 7 |
고양이 | 2 | 6 | 16 | 12 | 2 | 7 |
고양이 | 2 | 7 | 17 | 14 | 3 | 8 |
고양이 | 2 | 8 | 18 | 16 | 3 | 8 |
고양이 | 2 | 9 | 19 | 18 | 3 | 8 |
고양이 | 2 | 10 | 20 | 20 | 4 | 9 |
고양이 | 2 | 11 | 21 | 22 | 4 | 9 |
고양이 | 2 | 12 | 22 | 24 | 4 | 9 |
고양이 | 2 | 13 | 23 | 26 | 5 | 10 |
고양이 | 2 | 14 | 24 | 28 | 5 | 10 |
고양이 | 2 | 15 | 25 | 30 | 5 | 10 |
with t( lv, box1) as ( select 1, 1 from dual union all select 1, 1 from dual union all select 1, 2 from dual union all select 1, 2 from dual union all select 2, 1 from dual union all select 2, 1 from dual union all select 2, 1 from dual union all select 2, 2 from dual union all select 2, 2 from dual ) SELECT LV, BOX1 , DENSE_RANK() OVER(ORDER BY LV ASC, BOX1 ASC) BOX2 FROM T
오라클 함수를 이용했습니다.
with t1 as ( select '강아지' name, 1 lv1, 1 lv2, 1 lv3, 30 ea, 1 box1, 1 box2 from dual union all select '강아지' name, 1 lv1, 2 lv2, 2 lv3, 60 ea, 1 box1, 1 box2 from dual union all select '강아지' name, 1 lv1, 3 lv2, 3 lv3, 90 ea, 2 box1, 2 box2 from dual union all select '강아지' name, 1 lv1, 4 lv2, 4 lv3, 120 ea, 2 box1, 2 box2 from dual union all select '강아지' name, 1 lv1, 5 lv2, 5 lv3, 150 ea, 3 box1, 3 box2 from dual union all select '강아지' name, 1 lv1, 6 lv2, 6 lv3, 180 ea, 3 box1, 3 box2 from dual union all select '강아지' name, 1 lv1, 7 lv2, 7 lv3, 210 ea, 4 box1, 4 box2 from dual union all select '강아지' name, 1 lv1, 8 lv2, 8 lv3, 240 ea, 4 box1, 4 box2 from dual union all select '강아지' name, 1 lv1, 9 lv2, 9 lv3, 270 ea, 5 box1, 5 box2 from dual union all select '강아지' name, 1 lv1, 10 lv2, 10 lv3, 300 ea, 5 box1, 5 box2 from dual union all select '고양이' name, 2 lv1, 1 lv2, 11 lv3, 2 ea, 1 box1, 6 box2 from dual union all select '고양이' name, 2 lv1, 2 lv2, 12 lv3, 4 ea, 1 box1, 6 box2 from dual union all select '고양이' name, 2 lv1, 3 lv2, 13 lv3, 6 ea, 1 box1, 6 box2 from dual union all select '고양이' name, 2 lv1, 4 lv2, 14 lv3, 8 ea, 2 box1, 7 box2 from dual union all select '고양이' name, 2 lv1, 5 lv2, 15 lv3, 10 ea, 2 box1, 7 box2 from dual union all select '고양이' name, 2 lv1, 6 lv2, 16 lv3, 12 ea, 2 box1, 7 box2 from dual union all select '고양이' name, 2 lv1, 7 lv2, 17 lv3, 14 ea, 3 box1, 8 box2 from dual union all select '고양이' name, 2 lv1, 8 lv2, 18 lv3, 16 ea, 3 box1, 8 box2 from dual union all select '고양이' name, 2 lv1, 9 lv2, 19 lv3, 18 ea, 3 box1, 8 box2 from dual union all select '고양이' name, 2 lv1, 10 lv2, 20 lv3, 20 ea, 4 box1, 9 box2 from dual union all select '고양이' name, 2 lv1, 11 lv2, 21 lv3, 22 ea, 4 box1, 9 box2 from dual union all select '고양이' name, 2 lv1, 12 lv2, 22 lv3, 24 ea, 4 box1, 9 box2 from dual union all select '고양이' name, 2 lv1, 13 lv2, 23 lv3, 26 ea, 5 box1, 10 box2 from dual union all select '고양이' name, 2 lv1, 14 lv2, 24 lv3, 28 ea, 5 box1, 10 box2 from dual union all select '고양이' name, 2 lv1, 15 lv2, 25 lv3, 30 ea, 5 box1, 10 box2 from dual ) select name, lv1, box1, dense_rank() over (order by lv1, box1) from t1 ;
와 신이만든지기님..... 제가 만들다가..... 어떤 연관관계가 있는지 보다보니.. 닥 님이 보신 연관 관계 였네요 대단하십니다.