3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLのSUMを使うと結果がNULLになる!?その対処法

Last updated at Posted at 2020-09-29

はじめに

SQLでの集計時にSUMを利用するシーンは多くあると思いますが
結果に*NULL*が返って来ることがありました。
0として返して欲しかったのでその対処法を紹介します。

検証

そもそも、なぜ*NULL*が返ってきてしまうのか?
SUMしてるんだからどんな事があろうと0で返ってくるでしょ!という思い込みを技術的に検証します!

サンプルデータ

購入者 購入価格
A 100
B 120
C NULL
A 80
A 200
C NULL
D 0

全員の合計額を取得

*NULL*は無視され、ちゃんと合計額が取得できました。

SELECT SUM(`購入価格`) FROM table_name

-- 結果:500

Cさんの合計額を取得

SUMする対象のカラムが全て*NULLの場合は、NULL*になりました!

SELECT SUM(`購入価格`) FROM table_name WHERE `購入者` = 'C'

-- 結果:NULL

NULLを0で返すには「COALESCE関数」を使う

COALESCE関数は*NULL*だった場合に、引数に指定した値を表示してくれます。
これで思うようなデータになりました!

SELECT COALESCE(SUM(`購入価格`), 0) FROM table_name WHERE `購入者` = 'C'

-- 結果:0

さいごに

テーブル定義は大事!!!
でも、たまにちゃんとしていないテーブル定義もあるのでこういう小技も必要…

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?