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

JPAでの多対多のリレーション

以前、このエントリーでJPAのリレーションについて説明しました。 今回は多対多について説明します。 Contents1 テーブル構成2 ソース2.1 CDのエンティティ2.2 Artistのエンティテ …

no image

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

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

no image

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

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

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

no image

第二、第三の正規化&ER図&Check制約

前回第一正規化を話したので、第二、第三に進んでいきます。 Contents1 第二正規化とは?2 第三正規化とは?3 正規化のメリット4 ER図5 本日のSQLネタ Check制約 第二正規化とは? …

no image

JPQLでの算術関数

複雑なJPQLを書いていると、通常のレコードの取り出しだけではなく、合計(SUM)や算出(COUNT)などのいわゆる算術関数を使うことが一般的です。 JPQLでもこれらを通常通り扱うことができます。 …