結合した際のNULLの項目を、0にして集計する。
テストデータです。
t1
t2
すごくテストデータ適当ですが、、、
t1に対して、t2を結合した際、t2であるJOBテーブルは、NULLが発生します。
もしcount(),AVG()で集計する際ですが、集計関数はNULLは対象外となっています。
よって、件数が10だとしても、NULLが1あれば、COUNT(*)すると、9件と出てしまう。
全体の件数が変わるので、平均値も変わる。
以下のブログがわかりやすいです。
集計関数を使用する際は、NULLに注意すること!! 030_産業システム部| システム開発ブログ(システム開発のアイロベックス|東京都中央区の業務システム開発会社)
では対策として、ifnull('カラム','置き換えるもの'). を使う。
上のテーブルを結合した際の結果。
SELECT a.id ,b.job as job FROM `savvy-music-315103.test.aaa` as a left join savvy-music-315103.test.cccc as b on a.id = b.id LIMIT 1000
NULLは発生しました。
ifnullを使う。
SELECT a.id ,ifnull(job,'noname') as job FROM `savvy-music-315103.test.aaa` as a left join savvy-music-315103.test.cccc as b on a.id = b.id LIMIT 1000
値を置き換えられましたね。もしPRICEなどの数値でも、NULL⇨0 という風に置き換えられます。