コードレビューをやっていて意外とミスしやすいポイントだと思うのでメモ。
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