SQL

【SQL】COALESCE()関数を使って、NULLを0に置き換える。

本記事概要

対象者

  • マーケ担当者
  • PM
  • 経営企画部etc
  • レポーティング担当者

本記事の目的

  • COALESCE()関数を使って、NULLを0に置き換える

想定シチュエーション

KPIシートを定期クエリで自動更新しようと考えている方。
私の場合は広告効果のKPIシートを自動更新する際にCOALESCE()を使いました。
スプレッドシートのイメージは以下。

上記のようにデイリーでKPIシートを作成する場合、
WITH句を使って、X月1日〜X月末日のDATEだけを抽出したテーブルを作成し、DATEに各KPIをJOINしていく形をとると必要があると思います。
そういった場合、以下のスプレッドシートのように、値がNULLのセルにはセルが空白になりすごく気持ち悪いです。
そこでNULLには0が代入されるようにします。

COALESCE()でNULLを0に置き換える!(SQL)

rentalテーブル概要

今回は以下のようなrentalテーブルを使用します。

【SQL練習】サンプルデータベースを用意するで作成したMySQL公式のサンプルデータベースで練習することを一連の流れにしているので、多少強引にWITH句を使って説明する点ご了承ください😢

COALESCE()関数使い方

下記のコードをコピーして、まずはSQLを叩いてみてください。
①まずWITH句を使って、日付だけのテーブルを作ります。

クエリの結果は以下です。
■dateテーブル


今回はdateテーブルのsubstring(return_date,1,10)を基準に以下のdate2テーブルJOINします。

クエリの結果は以下です。
■date2テーブル

ではまずCOALESCE()関数を使わない場合

クエリ結果は以下です。

しかし21行目のget_date2.ccoalesce(get_date2.c,0)に変えると、

こんな感じで0が代入されます。
これを使えばスプレッドシートのセルを空白ではなく、0にすることができます。

・COALESCE(value,…)

リストの最初の非 NULL 値を返します。非 NULL 値がない場合は、NULL を返します。

MySQL 5.6 リファレンスマニュアル

参考

MySQL 5.6 リファレンスマニュアル

ABOUT ME
Okada Shogo
某Web系企業のマーケター 。インハウスでのweb広告運用やデータ分析をやってます。