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

herokuでMySQL

昨日に続き、heroku+MySQLのメモです。 herokuはディフォルトではPostgreSQLですが、アドオンを使うとMySQLも使えるようになります。 使い方ですが、herokuの管理画面でク …

no image

データクレンジング

リレーショナルデータベースでデータを管理する前に、しなくてはいけないことはデータをデータベースに登録できる形に整形することです。 このことをデータクレンジングといいます。 これを行わずに何も考えずにデ …

no image

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

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

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

no image

MySQLの大文字、小文字問題について

MySQLでテーブルを作る際にカラムに重複を許さない制約(unique)を振ることがあると思います。 数字の場合は問題ないのですが、文字列の場合、なんと英語の大文字と小文字が区別されません。 つまりa …

no image

HAVING句について NULL時の動き

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