skillup

技術ブログ

Database

SQL基礎 ウィンドウ関数

投稿日:

SQLの基礎(主にSELECT)を

  • whereはレコードに対しての集計、havingはレコードの集合に対しての集計
  • ビューは一時的なselect文なのでサブクエリとほぼ等価
  • 条件分岐で出力項目を変えたいときはcase。
  • group byの集計をしないタイプがウィンドウ関数。

※ウィンドウ関数に関して

例として下記のようなレコード(addressテーブル)があった場合、

address name 年齢
東京 山田 32
千葉 田中 35
東京 佐藤 39
千葉 鈴木 25
千葉 渡邊 49

以下のようなSQLをかくと

下記のような結果が得られる。グループ化はするけど、行数はselectとまったく一緒。

address | count
東京   | 2
東京   | 2
千葉  | 3
千葉  | 3
千葉  | 3

ウィンドウ関数は集計以外の関数でもrank,rou_number等で使われる。

以下のようなSQLをかくと

下記のような結果が得られる。

name | age | rnk
渡邊   | 49  | 1
佐藤   | 39  | 2
田中   | 35 | 3
山田   | 32 | 4
鈴木   | 25 | 5

参考文献
SQL実践入門

-Database
-

執筆者:


comment

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

関連記事

no image

transactionが切れた場合のロックの復旧方法

transactionをスタートしたまま、commitせずにプログラムを途中で止めた場合の処理について。 不用意にプログラムを止めないようにしましょう。 Contents1 ロックのメカニズム1.1 …

no image

SQLで数列を扱う

今回はSQLで数列を扱ってみましょう。 例えば下記のような0から9までの数字が書かれている数列があったとして、 これにより連番を作成してみましょう。 digit ——- 0 1 …

no image

sourceコマンドに関して(Linuxサーバー&MySQL)

Linux上ではコマンドをテキストファイルに記述して、

と入力すると命令を実行してくれます。 シェルスクリプトよりもお手軽に実行できる …

no image

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

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

no image

Firebaseでのミニアプリデプロイ

KVS的なDBを使うかもしれず、firebaseの復習をしております。以前、firebaseのサンプルなどちょこちょこ動かしましたが、firebaseに登録をしただけでデプロイまではしておりませんでし …