안녕하세요 답변 주셔서 너무 감사합니다. 버전은 5.6.25 이고요. 저번에 가르쳐 주셔서 잘해결하였는데 또 모르는것이 있어 다시 질문드립니다. 아래의 식처럼 쿼리를 짜야하는데 도무지 어떻게 해야할지 영 모르겠습니다. 가르침을 주시면 정말 감사하겠습니다.
A | B | C | D |
2019/2/18 | 6 | B2 | C2/COUNT(1) |
2019/2/19 | 16 | B2+B3 | C3/COUNT(2) |
2019/2/20 | 18 | B2+B3+B4 | C4/COUNT(3) |
2019/2/21 | 12 | B2+B3+B4+B5 | C5/COUNT(4) |
2019/2/22 | 9 | B2+B3+B4+B5+B6 | C6/COUNT(5) |
2019/2/23 | 8 | B2+B3+B4+B5+B6+B7 | C7/COUNT(6) |
2019/2/24 | 3 | B2+B3+B4+B5+B6+B7+B8 | C8/COUNT(7) |
2019/2/25 | 4 | B9 | C9/COUNT(1) |
2019/2/26 | 6 | B9+B10 | C10/COUNT(2) |
2019/2/27 | 2 | B9+B10+B11 | C11/COUNT(3) |
2019/2/28 | 5 | B9+B10+B11+B12 | C12/COUNT(4) |
2019/3/1 | 5 | B9+B10+B11+B12+B13 | C13/COUNT(5) |
2019/3/2 | 2 | B9+B10+B11+B12+B13+B14 | C14/COUNT(6) |
2019/3/3 | 2 | B9+B10+B11+B12+B13+B14+B15 | C15/COUNT(7) |
중간에 새로 시작하는 이유가 주가 바겨서 그렇습니다.
A | B | C | D | e |
2019-02-18 | 6 | B2 | C2/COUNT(1) | 1주 |
2019-02-19 | 16 | B2+B3 | C3/COUNT(2) | 1주 |
2019-02-20 | 18 | B2+B3+B4 | C4/COUNT(3) | 1주 |
2019-02-21 | 12 | B2+B3+B4+B5 | C5/COUNT(4) | 1주 |
2019-02-22 | 9 | B2+B3+B4+B5+B6 | C6/COUNT(5) | 1주 |
2019-02-23 | 8 | B2+B3+B4+B5+B6+B7 | C7/COUNT(6) | 1주 |
2019-02-24 | 3 | B2+B3+B4+B5+B6+B7+B8 | C8/COUNT(7) | 1주 |
2019-02-25 | 4 | B9 | C9/COUNT(1) | 2주 |
2019-02-26 | 6 | B9+B10 | C10/COUNT(2) | 2주 |
2019-02-27 | 2 | B9+B10+B11 | C11/COUNT(3) | 2주 |
2019-02-28 | 5 | B9+B10+B11+B12 | C12/COUNT(4) | 2주 |
2019-03-01 | 5 | B9+B10+B11+B12+B13 | C13/COUNT(5) | 2주 |
2019-03-02 | 2 | B9+B10+B11+B12+B13+B14 | C14/COUNT(6) | 2주 |
2019-03-03 | 2 | B9+B10+B11+B12+B13+B14+B15 | C15/COUNT(7) | 2주 |
WITH t AS ( SELECT '2019-02-18' dt, 1 w, 6 v UNION ALL SELECT '2019-02-19', 1, 16 UNION ALL SELECT '2019-02-20', 1, 18 UNION ALL SELECT '2019-02-21', 1, 12 UNION ALL SELECT '2019-02-22', 1, 9 UNION ALL SELECT '2019-02-23', 1, 8 UNION ALL SELECT '2019-02-24', 1, 3 UNION ALL SELECT '2019-02-25', 2, 4 UNION ALL SELECT '2019-02-26', 2, 6 UNION ALL SELECT '2019-02-27', 2, 2 UNION ALL SELECT '2019-02-28', 2, 5 UNION ALL SELECT '2019-03-01', 2, 5 UNION ALL SELECT '2019-03-02', 2, 2 UNION ALL SELECT '2019-03-03', 2, 2 ) SELECT dt , w , v , @cnt := IF(@w = w, @cnt + 1, 1) v_cnt , @sum := IF(@w = w, @sum + v, v) v_sum , ROUND(@sum / @cnt, 2) v_avg , @w := w FROM t , (SELECT @w := 0, @sum := 0, @cnt := 0) a ORDER BY dt ;
네 다음부터 구체적으로 적도록 하겠습니다. 흑시 B열에 값이 0 이 들어가있으면 D에서 나누기를 할때
제외하고 하는 방법은 있을까요?
날짜(a) | 폐사(b) | 폐사 합(c) | 평균(d) | 주차(e) |
2019-02-18 | 0 | B2 = (0) | 0이 포함시 제외 | 1주 |
2019-02-19 | 0 | B2+B3 = (0) | 0이 포함시 제외 | 1주 |
2019-02-20 | 18 | B2+B3+B4 = (18) | (18/ 1) | 1주 |
2019-02-21 | 12 | B2+B3+B4+B5 = (30) | (30/ 2) | 1주 |
2019-02-22 | 9 | B2+B3+B4+B5+B6 = (39) | (39 / 3) | 1주 |
2019-02-23 | 8 | B2+B3+B4+B5+B6+B7 = (47) | (47/ 4) | 1주 |
2019-02-24 | 3 | B2+B3+B4+B5+B6+B7+B8 = (50) | (50 / 5) | 1주 |
2019-02-25 | 4 | B9 | C9/COUNT(1) | 2주 |
2019-02-26 | 6 | B9+B10 | C10/COUNT(2) | 2주 |
2019-02-27 | 2 | B9+B10+B11 | C11/COUNT(3) | 2주 |
2019-02-28 | 5 | B9+B10+B11+B12 | C12/COUNT(4) | 2주 |
2019-03-01 | 5 | B9+B10+B11+B12+B13 | C13/COUNT(5) | 2주 |
2019-03-02 | 2 | B9+B10+B11+B12+B13+B14 | C14/COUNT(6) | 2주 |
2019-03-03 | 2 | B9+B10+B11+B12+B13+B14+B15 | C15/COUNT(7) | 2주 |
WITH t AS ( SELECT '2019-02-18' dt, 0 v, 1 w UNION ALL SELECT '2019-02-19', 0, 1 UNION ALL SELECT '2019-02-20', 18, 1 UNION ALL SELECT '2019-02-21', 12, 1 UNION ALL SELECT '2019-02-22', 9, 1 UNION ALL SELECT '2019-02-23', 8, 1 UNION ALL SELECT '2019-02-24', 3, 1 UNION ALL SELECT '2019-02-25', 4, 2 UNION ALL SELECT '2019-02-26', 6, 2 UNION ALL SELECT '2019-02-27', 2, 2 UNION ALL SELECT '2019-02-28', 5, 2 UNION ALL SELECT '2019-03-01', 5, 2 UNION ALL SELECT '2019-03-02', 2, 2 UNION ALL SELECT '2019-03-03', 2, 2 ) SELECT dt , v , @cnt := IF(@w = w, @cnt, 0) + SIGN(v) v_cnt , @sum := IF(@w = w, @sum, 0) + v v_sum , ROUND(@sum / @cnt, 2) v_avg , @w := w w FROM t , (SELECT @w := 0, @sum := 0, @cnt := 0) a ORDER BY dt ;