最近、書きたい SQL がうまく書けないから見て欲しいと相談されることがありました。
その時に、欲しい様式でデータを抽出するテクニックも大事だけど、抽出したデータに間違いがないか確認するテクニックも大事だと思いました。
自分なりに気をつけていることをメモ。
こういうテクニックは血と涙でできてるイメージありますよね。笑
前提
私は主に SQLServer を使って仕事をしてきています。ただ、基本的に SQL はどのデータベースエンジンでも同じものが動くので、他のものでも役立つはずです。
1. サブクエリを単体で実行する
SQL 内にサブクエリを書く時、必ずサブクエリ単体で実行してみるようにしてます。
コードを見て問題ないと思ってても、実行すると間違ってたこと何回もあります。
2. ORDER BY でグループ化のミスに気づく
例えば、履歴データからユーザーの一覧を作りたい時、1ユーザー1レコードとなるはずです。
きちんとそのようになっているか、ユーザー ID で並び替えて確認します。ユーザー ID で並び替えた時に同じユーザーがならんでないか目視で確認します。
とても複雑な場合には別途 SQL を組んで確認します。
サブクエリは本来、ORDER BY を設定できませんが、単体で実行する時に ORDER BY をつけて確認します。
3. 別のソースで総数をチェック
件数、金額などの集計値が正しいか、別のやり方で集計したデータと整合性がとれてるか確認してます。
できれば既に正しいことが確認されてる、帳票やレポートから数字を拾ってきます。
さいごに
書き出してみると、いかに自分の思い込みを排除して、客観性を確認するかということが大事なんだなと改めて認識できました。