結合した際のNULLの項目を、0にして集計する。

テストデータです。
t1
f:id:lekam:20210711112201p:plain

t2
f:id:lekam:20210711112158p:plain

すごくテストデータ適当ですが、、、
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は発生しました。


f:id:lekam:20210711111706p:plain

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


f:id:lekam:20210711113734p:plain

値を置き換えられましたね。もしPRICEなどの数値でも、NULL⇨0 という風に置き換えられます。