데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
안녕하세요.
쿼리 질문 드립니다.
1~4번 또는 1~3번 에 대하여 묶음 단위로 Sum 을 진행하고 싶습니다.
원본
col1 | col2 | col3
1 | 4 | 10
2 | 4 | 20
3 | 4 | 30
4 | 4 | 40
1 | 3 | 11
2 | 3 | 12
3 | 3 | 13
1 | 4 | 10
2 | 4 | 13
3 | 4 | 11
4 | 4 | 12
즉, col2 그룹 수량의 갯수만큼 1 ~ 4까지 의 col3 의 Sum 을 구하고 싶습니다.
요약
RCol1 | RCol2
1 | 4 | 100
2 | 3 | 36
3 | 4 | 46
Comment 1
-
약은 중
2020.12.15 12:21
데이터가 생성된 순서의 의미로 NO를 추가했습니다.;WITH DATA1 AS(SELECT 1 NO,1 COL1,4 COL2,10 COL3 UNION ALLSELECT 2,2,4,20 UNION ALLSELECT 3,3,4,30 UNION ALLSELECT 4,4,4,40 UNION ALLSELECT 5,1,3,11 UNION ALLSELECT 6,2,3,12 UNION ALLSELECT 7,3,3,13 UNION ALLSELECT 8,1,4,10 UNION ALLSELECT 9,2,4,13 UNION ALLSELECT 10,3,4,11 UNION ALLSELECT 11,4,4,12), CTE_1 AS(SELECT NO GRP,NO,COL1,COL2,COL3FROM DATA1WHERE COL1 = 1UNION ALLSELECT A.GRP,B.NO,B.COL1,A.COL2,A.COL3 + B.COL3 COL3FROM CTE_1 A,DATA1 BWHERE A.COL1 + 1 = B.COL1AND A.NO + 1= B.NO )SELECT ROW_NUMBER() OVER(ORDER BY GRP) RCOL1,MIN(COL2) RCOL2,MAX(COL3) RCOL3FROM CTE_1GROUP BY GRPNO필드가 없고,등록일자 같은 필드만 존재한다면AND A.NO + 1= B.NO=>AND A.등록일 <= B.등록일이런 형태로 바꿔보시기 바랍니다.