skillup

技術ブログ

Database

サブクエリ 分析関数の代替案として

投稿日:2016年11月17日 更新日:

今回は分析関数系のネタです。

以前にも分析関数を少し学習しましたがMySQLにはないので、サブクエリを使い書くことになります。

下記のような入出金講座があるとします。
Accounts

prc_date | prc_amt
————+———
2006-10-26 | 12000
2006-10-28 | 2500
2006-10-31 | -15000
2006-11-03 | 34000
2006-11-04 | -5000
2006-11-06 | 7200
2006-11-11 | 11000

ここから現在の口座残高を求めてみます。ここでは分析関数を使うと非常に楽です。例えば下記のように書いてみましょう

prc_date | prc_amt | onhand_amt

————+———+————
2006-10-26 | 12000 | 12000
2006-10-28 | 2500 | 14500
2006-10-31 | -15000 | -500
2006-11-03 | 34000 | 33500
2006-11-04 | -5000 | 28500
2006-11-06 | 7200 | 35700
2006-11-11 | 11000 | 46700

ただ残念なことにMySQLでは入っていないのでこれをサブクエリを使って求めます。

これもやはり自己結合でがんがえると物凄いわかりやすいです。

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

MySQLのユーザー変更+information_schema.columns

MySQLで行うユーザーの作成について

これですが、一つのデータベースに対して行うとhost内のユーザーすべてが切り替わってしまいます …

no image

MySQLのロックに関して+サブクエリ内のupdate

MySQLのロックに関して。 データベースではデータの整合性を保つために読み書きを一時的に制限する仕組みがあります。(データベースだけではないですが・・・) 大きく分けると共有ロック(書き込みは当然だ …

no image

JPAまとめ

JPAわけわかんねーと思い、触りはじめてから3か月ぐらいたちます。 いまだに細かい部分はよくわかっていないことは多いのですが、全体像というか何となくどういうものかはわかり始めてきたいのでまとめたいと思 …

no image

HAVING句について NULL時の動き

HAVING句のNULLがあった時の挙動にたいしてメモリます。 COUNTの処理 対象上の列数を数えるのにCOUNTを使うと思いますが、COUNT(*)とCOUNT(列名)では動きが若干違っており、前 …

no image

joinとeager loading

フレームワークでデータをORMがらみでjoinするときのネタ。 自分の場合はLaravel。他のフレームワークでも考え方は通じるものあるかと・・ Contents1 通常のjoin2 ループの中で取得 …