このブログは技術記事メインで運用しようとして始めましたが、気付いたら本のアウトプットメインになってました。笑
たまには技術記事を書こうということで今週取り組んでて苦しんだPostgreSQLを使った最新の継続日数取得について書きます。
経緯
今コツコツと取り組んでいる個人開発でGitHubとかで見る最新の継続日数の取得をしたいと考えたところから始まりました。 ちなみにこんな感じのやつです。
Current StreakをSQLで実現しようとしました。
実装
ネットで最新の継続日数を取得するSQLの情報が全然なくどうしようかなと迷っていたら、Latest Number of Consecutive Days(Current Streak)を見つけました。 この記事を見ていると何やらSQL Serverで実現したいことを実装しているっぽい!ということでこれをPostgreSQLに書き換えてみようと試みました。
上記記事で最終的にできてたSQLはこんな感じでした。これをPostgreSQLに変えていきます。
|
|
で実際にやってみたらこんなSQLができ上がりました。SQL ServerとPostgreSQLで書き方の差があって結構苦労しました。
outer apply
の書き換えとかも訳わからなくて疲れました。。
|
|
で結果どうなったのか
SQLの書き換えをしてこれを自分の個人開発のテーブルに合わせてみましたが、「今日のデータがあったときに今まで投稿したデータを日付毎にまとめてその日付のトータルを返す」って感じにしかなりませんでした。。 今回求めたかったのは最新の継続日数だったのでちょっと違うなーとなりまして、SQLで頑張るのはもうやめました。(SQLしっかり理解している人なら簡単なのかなこれは)
こういった実装はSQLで基本せずフロントに返したデータを元にJavaScriptでいい感じにするのが楽だし管理もしやすいなと思ったのでそっち路線に変更しました。 ついつい絶対SQLで解いてやると頑固に取り組んでいましたが、頑固も考えものです。