🚀

SQLで集約関数を使うときの注意点

2022/02/26に公開

コードレビューをやっていて意外とミスしやすいポイントだと思うのでメモ。

SQLでの集約関数において、以下の場合、0ではなくNULLを返すことがあるので注意する。

  • 集計対象が0件の場合
  • 集計対象が全てNULLの場合
集約関数 結果が0行 対象が全てNULL
COUNT 0 行数
SUM NULL NULL
AVG NULL NULL
MAX NULL NULL
MIN NULL NULL

SequelizeなどのORMを利用している場合も、上記の表のNULLにあたる処理ではNaNを返したりするので、後続処理が数値前提になっていないか注意する。

Discussion