SQLレクチャー会/第3回~第8回
第3回~第8回をまとめてみました。
自分の感想コメント等見返して、「ウン成長してる」と自画自賛しながらまとめました
SQLレクチャー会/第3回~第8回
BigQuery練習会 #3 (2020/6/8) 「簡単な集計」
BigQuery練習会 #4 (2020/6/10)・#5 (2020/6/12) 「サブクエリ・WITH句」
BigQuery練習会 #6 (2020/6/15)・#7 (2020/6/18) 「ウィンドウ関数入門」
BigQuery練習会 #8 (2020/6/23) 「WHERE」
<#3>
宿題チェックTime
初の宿題で書いたSQLは`SELECT`と`FROM`と`ORDER BY`と`LIMIT`の4行(今となっては簡単なもの)だけど、15分もかかったらしい(自分のコメントが残ってた)
きっと自分がんばったんだろうな~
カラムに別の名前を付ける:`AS`を使うとカラムに別名を付けることができます
BigQueryでは日本語のカラムは付けることができません...英語でカラム名を考えるのが難しければ、ローマ字でも大丈夫です(←英語ができない私は英単語とローマ字が混ざった名前をつけてしまう)
練習でやってみると、やはり英語とローマ字まざりの名前を付ける(高校の頃、模試で英語20点を取っただけのことはある!)
休閑話題:クエリを見やすくしよう
BigQueryではWebコンソール上でクエリを見易く書き換えてくれます
【感想】やってみると、めっちゃ綺麗に並ぶので感動!!
簡単な集計をしてみよう
集約関数:平均値(`AVG`)/個数(`COUNT`)/最新(`MAX`)の日付
集約関数を使う&これまでに習った並べ替えや、TOP10を出すなどを混ぜた練習問題をやっていった
【感想】ちょっと、やれる事が増えて賢くなった気分で一人いい気分に浸ってた(笑)
このちょっとずつやれる事が増えていったのが途中棄権にならなかった要因かなと思います
<#4・#5>
宿題チェックTime
1問目:`COUNT`を使う宿題だったみたいで、この回の宿題も15分くらいかかった模様
「!」マークで怒られた模様→よく分からないけど怒られた内容にあった項目を消したらどうにかなったと自分のコメントがあります
怒られながらも進んでいけるようになった模様!
2問目:10分くらいでできたちょっと慣れてきたとコメントかいてあるので、少しずつ慣れていく様子が分かっておもしろい
サブクエリ:かっこの一番内側の`SELECT`から実行されていく(内側から外側へというイメージ/視線の流れとしては下から上へ流れていく)
WITH句:クエリ内での中間テーブルのようなものを定義できる
サブクエリ(WITH句)の練習問題
【感想】最初はやり方ガイドが書かれていて、その順番に書いていく感じで、次の問題はガイドなしという感じで問題を作ってくれたので少しずつ自分でできる部分が広がっていく感じでやり易かった。
最初はガイドありだと、迷子にならずなんか上手にできた気分にになれる(これが成功体験なのかな!?ガイドがあっても出来上がるとちょっと気分がいい)
色んな変換をしてみよう
DATE_TRUNC:`2020-06-12`のような日付を月単位(`2020-06-01`)に丸めることができる
※`MONTH``DAY``YEAR`の単位も丸められる
DATE_DIFF:日付の引き算/登録されてからの日付等が出せる
CASE:~なら●●みたいなやつ/台数をレンジに分ける等
【感想】おー!いろいろできて便利だぞ!!
<#6・#7>
宿題チェックTime
今回はサブクエリ(WITH句)の練習問題だったようで、結構悪戦苦闘したみたい
「怒られて→直す を繰り返してるうちに答えはそれっぽくなったんですが、やってきた道のりを記録するのを忘れた…」とコメントが残ってる
この辺りから、宿題の練習問題に40分とか1時間とかかかりだしてる…途中で自分でも何やってるのか分からなくなって、最初からやり直してみたり試行錯誤がんばってる過去の自分がいます
がんばれ自分!と未来(今)の自分が応援してます
ウィンドウ関数入門
深い分析でやりたくなること「集約もしつつ、元データの情報も合わせて行に持ちたい!」ができるやつ
ウィンドウ関数は過去に書いたやつをチラチラ見ないと書けないので、すぐ書けなくても全然気にしなくていいです
レクチャー会、2~3回くらいかけてやっていこうと思いますので、ぼちぼち行きましょう
(↑もう無理だ…才能ない…とめげてしまわないようめっちゃ気を使ってもらってる)
`PARTITION BY`:`GROUP BY`と同じようなイメージ/`PARTITION BY`で指定したカラムでグルーピングする
`ROW_NUMBER()`:`PARTITION BY`でグルーピングされた中での順番を出す
rankを出す以外にも、ウィンドウ関数は様々なことができます
`LAG`関数:グルーピングした内部の前の行の結果を取得したいときに使う関数
【感想】この辺りも色々できて便利だな~実際に出したいレポートとかイメージが広がってちょっと楽しい気分でした!
<#8>
欲しい条件でデータをフィルタしよう
`WHERE`:条件でデータをフィルタ/条件「文字列が等しい」→`=`を使う/条件「この文字列がどこかに入るんだけど...」→`LIKE`と`%`を使う
【感想】おー!部分検索できるぞ!!便利!!!
NULL(何もない)とBoolean(真偽値。「ぶーりあん」と呼びます)については特別
Boolean:`=`ではなくて`IS TRUE`とか`IS FALSE`と書く
NULL:` = "NULL"` ではなく`IS NULL`と書く
【感想】「Boolean」という文字列は見たことあったけど、ここで読み方初めて知った。
エクセルのvlookupとかで`TRUE`や`FALSE`はなじみがあったのですんなり理解できたぞ!
複数の条件を付けるとき:`OR`や`AND`を使う/`OR`や`AND`の数が多くなったときに便利→`WHERE ... IN`
【感想】10個くらいまでなら頑張るけど、それ以上はめんどいなと思ってたら便利なものがあるではないですか!!!