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

SQLで数列を扱う

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

no image

JPAでのリレーションに関して

JPAではテーブルをクラスで定義します。もちろん例外とかはいろいろあるのですが、1テーブル1クラスというつくりで、これをエンティティと呼びます。 もともとクラスを作ってからDBを作成したり、JTAの規 …

no image

Postgres リモートホストからの接続他

今まで使ってきたデータベースはMySQLがほとんどなのですが、最近少し、Postgresを触っています。 今回はパスワードの設定とリモートからの接続など。 Contents1 postgresへのログ …

no image

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

no image

NULLについて

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

アーカイブ