티스토리 뷰
반응형
사실 숫자의 누계를 만든다는 것은 다양한 방법이 있으며
여기서 소개하는 방법만이 옳다는 것이 아님을 밝혀둔다.
다만 sql문을 다양하게 작성 해 볼수 있다는 것과
여러가지 상황에 맞게 사용할 수 있도록 익혀 둔다면 나중에 어디서 써먹을 수도 있기에
이것도 좋겠다 싶어 간단히 포스팅 해보기로 한다.
우선 다음과 같은 테이블에 데이터가 있다고 가정해 보자.
select 'a' as alpha, '1' as i -- alpha 컬럼은 별 의미없음...
into #tmpTbl2
insert #tmpTbl2 values('b', '2')
insert #tmpTbl2 values('c', '3')
insert #tmpTbl2 values('d', '4')
insert #tmpTbl2 values('e', '5')
insert #tmpTbl2 values('f', '6')
insert #tmpTbl2 values('g', '7')
이 때 다음 결과와 같이 i컬럼의 누계와 i컬럼의 합계 (i = i+누계) 를 구하고자 한다.
물론 생각나는 여러가지 방법이 있을 수 있고 결과가 동일하다면 어떤 것도 정답이 될 수 있다.
그리고 나는 이런 방식의 쿼리로 같은 결과를 한 번 내보았다.
select a.*, sum(cast(b.i as int)) as '누계' from #tmpTbl2 a left join #tmpTbl2 b on a.i >= b.i group by a.alpha, a.i order by a.alpha, a.i
a테이블의 i컬럼과 b테이블에 있는 i컬럼을 on절에서 비교하여 join한 결과에서
b테이블의 i컬럼을 sum한 것.
이렇게 하면 다음과 같이 위에서 원하는 결과를 얻을 수 있다.
alpha i 누계
a 1 1
b 2 3
c 3 6
d 4 10
e 5 15
f 6 21
g 7 28
응용해서
만약에 반대로 a테이블의 i컬럼을 sum하게 되면 어떤 결과가 나올까?
그건 직접 해보는 것을 추천한다.
그리고 왜 그런 결과가 나오는지도 한번 생각해 보기 바란다.
반응형
'DB(MS, Oracle, PG, MY..etc)' 카테고리의 다른 글
oracle sql developer jdk버전 변경하기(msvcr120.dll 없음) - product.conf 수정 (4) | 2019.01.22 |
---|---|
쿼리 작성 예제 - 연속된 날짜 집합 구하기(row_number) (1) | 2019.01.16 |
쿼리 출력 결과를 가로에서 세로로 변경하기(pivot을 사용하지 않고) (0) | 2019.01.09 |
하위 테이블에서 걸러낸 결과로 전체 컬럼 가져오기(group by, having count) (0) | 2019.01.09 |
MS-SQL 튜닝에 대한 짧은 생각 (0) | 2019.01.02 |
댓글
반응형
02-13 19:16
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 고전게임
- 고전명작
- XML
- 틀린그림찾기
- 중독성짱게임
- 플래쉬
- 8비트상성
- 좀비게임
- J.S Bach
- c#
- 오락실 게임
- 오락실게임
- brawlstars
- MS-SQL
- 플래쉬 게임
- 레트로게임
- xml강좌
- C
- 브롤스타즈
- 플래시
- XML Programming with VB 6.0
- 다른그림찾기
- 엑셀
- Excel
- 8비트
- 추억의 게임
- 플래시게임
- 플래시 게임
- SQL
- 플래쉬게임
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함