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

persistence.xmlのプロパティについて

JavaEEではデータベースとの設定情報はpersistence.xmlに記述します。 (ユーザー名、パスワード、ポート、driver名、データベース名などの情報はglassfish-resource …

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト・書籍5 ソース SQLイ …

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

no image

NULLについて

「達人に学ぶSQL徹底指南書」を読み進めていきましたがNULLについていろいろ書いてあるのでメモリます。 Contents1 NULLには未知と適用不能の2パターンがある2 = NULL が使えず I …

no image

NOT EXISTSの利用2

今回もNOT EXISTSの利用です。 前回の問題にプラスアルファし、列が一緒でないと連続でも意味ない仕様にします。 例えば下記のようなテーブルがあるとします。 seat | row_id | sta …