give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

累積値を求めるSQL

SQL Server用のロジックとして書くとこんな感じ。
クエリの構造自体は他のRDBMSでも使えるはず。


SQL

create table #a (key_col int, val int)

insert into #a values (1, 10)
insert into #a values (2, 10)
insert into #a values (3, 30)
insert into #a values (4, 10)

select x.key_col,x.val,sum(y.val) as cumulated
from #a x 
inner join #a y on
x.key_col >= y.key_col
group by x.key_col,x.val
order by x.key_col,x.val

drop table #a


結果

 key_col     val         cumulated   
 ----------- ----------- ----------- 
           1          10          10 
           2          10          20 
           3          30          50 
           4          10          60 


参考書籍

SQL Hacks ―データベースを自由自在に操るテクニック

SQL Hacks ―データベースを自由自在に操るテクニック

  • 作者: Andrew Cumming,Gordon Russell,西沢直木
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2007/07/28
  • メディア: 単行本(ソフトカバー)
  • 購入: 3人 クリック: 90回
  • この商品を含むブログ (34件) を見る