SQLの基礎(主にSELECT)を
- whereはレコードに対しての集計、havingはレコードの集合に対しての集計
- ビューは一時的なselect文なのでサブクエリとほぼ等価
- 条件分岐で出力項目を変えたいときはcase。
- group byの集計をしないタイプがウィンドウ関数。
※ウィンドウ関数に関して
例として下記のようなレコード(addressテーブル)があった場合、
address | name | 年齢 |
---|---|---|
東京 | 山田 | 32 |
千葉 | 田中 | 35 |
東京 | 佐藤 | 39 |
千葉 | 鈴木 | 25 |
千葉 | 渡邊 | 49 |
以下のようなSQLをかくと
1 2 3 |
SELECT address, COUNT(*) OVER (PARTITION BY address) FROM address |
下記のような結果が得られる。グループ化はするけど、行数はselectとまったく一緒。
address | count
東京 | 2
東京 | 2
千葉 | 3
千葉 | 3
千葉 | 3
ウィンドウ関数は集計以外の関数でもrank,rou_number等で使われる。
以下のようなSQLをかくと
1 2 3 4 |
SELECT name, age, RANK() OVER ( ORDER BY age DESC ) as rnk FROM address |
下記のような結果が得られる。
name | age | rnk
渡邊 | 49 | 1
佐藤 | 39 | 2
田中 | 35 | 3
山田 | 32 | 4
鈴木 | 25 | 5
参考文献
SQL実践入門