『達人に学ぶSQL徹底指南書 第2版』を読んだ
[2020-12-20-1] にも書いた通り、去年の 4 月から SQL と格闘する毎日です。もっとも全部自分で書くわけではなく、Looker が出力する SQL を理解したり、発生したエラーやデータ不正の原因を SQL 視点で調査したり、検証用の使い捨ての SQL を書いたりといった感じです。 つまりは SELECT 文しか書かないです。しかし、SELECT 文こそが SQL そのものと言っても良いため、現在のデータアーキテクト(データ整備人)という立ち位置での学習教材を探していました。そんな中思い出したのが本書になります。 LookML 開発者としてはこの本に書かれた全てが「優先度高」ではないため、敢えて流し読みを心がけました。 その中で重要だと思ったのはこのあたりでしょうか。 ・1 CASE 式のススメ ・2 必ずわかるウィンドウ関数 ・4 3値論理と NULL ・7 ウィンドウ関数で行間比較を行なう ・8 外部結合の使い方 ・18 GROUP BY と PARTITION BY Looker が出力する SQL で見かけない気がする EXISTS, HAVING あたりは流し読みしたので、正直まだ理解していません。近いうちに読み返すと思います。 それとは別に、「第1部 9 SQL での集合演算」は興味深かったです。すなわち、和(UNION)、差(EXCEPT)、積(CROSS JOIN)です。商(DIVEDE BY)は「諸事情」により標準化が遅れているそうです。今まで雰囲気で UNION ALL を使うくらいだったので、集合演算は自分のスコープが広がった気がしました。 「15 関係に始まり関係に終わる」に SQL の関係閉包性が UNIX のパイプの概念とよく似ているという記述も興味深かったです。 UNIX ではファイルがさまざまなコマンドの入力・出力になるため、(標準)出力をパイプで次々と渡すことが出来ます。SQL では UNIX のファイルはテーブルに相当します。SELECT 文はテーブルを引数にとってテーブルを返すため、UNIX と同じように次々と出力を渡すことが出来ます。これを関係の閉包性と呼ぶそうです。これを知って、SQL に一気に親近感が湧きました。...