SQL
SQLのLinterであるSQLfluffをCI /CDで回したかったので、GitHub Actionsで試してみた。今回は PR上でCIが回る checkout時のデータ量削減で、fetch-depth: 1の設定 リポジトリ内の全てのSQLファイルにLinterを実行するため、find . -name '*.sql' -type f | x…
SQL の GROUP BY を使うとカラムのデータごとに集計できる。 例えば次のようなデータがあり、GROUP BY を使って SQL を実行する。 実行環境はsqlfiddleで、MySQL5.6を使った。 sqlfiddle.com データはテストデータ生成サイトで作った。 https://tm-webtools.…
プロジェクトの中で SQL を使い ETL 処理を書いていたが、個人によって書き方にばらつきがあり、他人の SQL を確認したりメンテナンスするタイミングがとてもつらかった。 SQL もフォーマッタや linter を使って、少しでも作業しやすくしたいと思って探して…
SQL の分析関数である RANK と DENSE_RANK を使うと、順序が付けられた値のセットの中で何番目の値かを返すことができる。 今回は RANK と DENSE_RANK を使って、動きを確認していく。 RANK (Transact-SQL) - SQL Server | Microsoft Docs DENSE_RANK (Trans…
SQL の分析関数である FIRST_VALUE と LAST_VALUE を使うと、順序が付けられた値のセットの中で最初の値と最後の値を返すことができる。 今回は FIRST_VALUE を使って、動きを確認していく。 FIRST_VALUE は最初の値、LAST_VALUE は最後の値という違いだけで…
SQLのMAX・MIN関数には数値以外にも文字列を指定することが出来ます。 「最大値/ 最小値」と言われると数字しかイメージしてこなかったので、恥ずかしながらとても驚きました。 このあたりの動きをSQL Fiddleを使って確認していきます。 今回もSQL Fiddleを…
SQL の分析関数である LAG と LEAD を使うと、現在の行の値と前後の行の値を比較できる。 今回は LAG を使って、動きを確認していく。 LAG は前の行、LEAD は後ろの行という違いだけで、構文は 同じになるので、LEAD を知りたい場合は適宜置換してもらえると…
SQL で家計簿のような科目別で集計した表を作成するテクニックを見て驚いたのでブログに残しておく。 環境を用意しないで SQL を試せる場所として SQL Fiddleが良かったので、使ってみてほしい。 画面構成 SQL Fiddleについて説明しておく。 アクセスすると…
業務で分析関数を使うことがあったが、今まで簡単な SQL しか触ったことがなかったので苦労した。 調べた中で整理を兼ねて、複数回に渡りまとめておく。 分析関数を一言でいうと、入力された値を集計し、各行に値を返すものとされている。 集計の動作を聞く…
自分は頭が硬いなぁと思ったのですが... SQLでdate型の列にnullが入っているものがあり、nullも含めて全件出したいなぁと思っていたんですが、 AND date BETWEEN '1900/01/01' AND '2999/12/31' これでは、nullが検索結果に出てきません。 そのnullも含めて…