30歳 独学で始めるプログラミング ~WEBデザイン・アプリ開発~

ITスキルに興味がでたので、codeを書いてみたら面白くてハマってしまいました!日々何をやったのかを中心に、記事を書いていきたいと思います。

17日目:データ解析言語 SQLの学習(最終演習問題)

<学習日>

17日目

<学習内容>

 

SQL 道場:実践あるのみ! 学んだことをアウトプットするぞ!最終問題!

<参考>

Progateレベル:96

 

<学習内容詳細>

SQL 道場:実践あるのみ! 学んだことをアウトプットするぞ!最終問題!

f:id:yakuzen_kokoro:20200720231834p:plain

 

はい、ということで、SQLのⅠ-Ⅲの最終問題に挑戦してきました!

 

今までの道場編(HTML&CSS)では、初級の道場編でも苦労して、ノートにまとめて頭に叩き込み、何度か挑戦してスラスラcodeが書けるレベルになりましたが、

 

今回はなんと、ごくごく詰まることもなく、正解に辿り着くことが出来ました^^

 

プログラミング脳になりつつあると思って、プラスに捉えていきたいと思います。

 

ただ、Progate自体が入門編のさらに入り口付近だけ、という認識を持っていることもあり、調子に乗ることなく、謙虚に学び続けたいと思います!

 

f:id:yakuzen_kokoro:20200720232743p:plain

 

さて、全体的にスムースに進んだとはいえ、やはり得手不得手はあります。

 

私の場合はgroup byでグループ化した後の処理について、感覚的に理解しにくいです。

 

上記の例では、テーブルの結合まではあっさりいくのですが、何でグループ化した場合に「売上額」を正しく計算させられるのかをやや迷い、

 

selectの部分でsum(price)だけで問題ないことに、そこそこ迷ってから辿り着いています!

 

group byした時点で、行数が指定のグループのみなって縮小され、select *で出力した場合、代表的な値しかテーブルになりません。

 

なので、見えない部分の情報を足し合わせているような感覚になって、シンプルにsum(price)で十分なことに迷いを生じるのだと思います。

 

「グループ化しても、グループ化したあとに欄外にある情報はなくなるわけではない」ということを意識して、SQLに取り組んでいきたいと思います^^

 

f:id:yakuzen_kokoro:20200720233512p:plain

 

あとは、今後実戦では小さなデータベースを扱うことはないと思うので、結合の徹底と効率化が肝になるかなと思っています。

 

その上で、カラムの指定は「テーブル名.カラム名」を癖にしてしまった方が、データ解析のエラーを減らせるかなと感じました^^

 

エラーとして表示が出るならいいのですが、自分が抽出したいと考えていたデータとは別のデータをとってきてしまった、という事態が一番怖いです(0 0)

 

シミュレーションでもなんでもそうですが、エラーが出るのはハッピーで、アウトプットの間違いに確実に気付けるからです!

 

エラー表示が出た状態のアウトプットを、正しいと考えて進む人はいないからですね。

 

一方、中途半端に計算がエラーなしで完結してしまうと、アウトプットを妄信してしまうというリスクが高まります。

 

これにはインプット時と、アウトプット解析時の両面から対策をする必要があると考えていて、インプット側の対策の一つが、上記の「カラムの指定は”テーブル名.カラム名”」を癖にすることだと位置づけています。

 

ガーベッジ in ガーベッジアウト (ゴミをいれたら、ゴミがでてくる)

 

結果の間違いは、そもそもインプットから間違えている場合がよくあるよ、ということですね^^

 

今日はほとんどプログラミングの勉強が進みませんでしたが、少ないネタでブログをある程度の長さを書く練習が出来たので、これはこれでよかったです^^

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!