ホームページ > データベース > mysql チュートリアル > 空のデータセットで MySQL の SUM 関数を使用するときに NULL の代わりに「0」を返すにはどうすればよいですか?

空のデータセットで MySQL の SUM 関数を使用するときに NULL の代わりに「0」を返すにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-03 03:34:30
オリジナル
554 人が閲覧しました

How to Return '0' Instead of NULL When Using MySQL's SUM Function on Empty Datasets?

値が存在しない場合に MySQL の SUM 関数から '0' を取得する方法

MySQL の SUM 関数は、数値を集計する便利な方法を提供します価値観。ただし、クエリ中に一致する行が見つからない場合、SUM 関数は通常 NULL 値を返します。ユースケースによっては、NULL ではなく '0' を返す方が望ましい場合があります。

COALESCE を使用して問題を解決する

この問題の解決策は次のとおりです。 COALESCE機能。 COALESCE を使用すると、最初の引数が NULL と評価されたときに返されるデフォルト値を指定できます。

次の例を考えてみましょう。

SELECT COALESCE(SUM(Column_1),0)
FROM Table
WHERE Column_2 = 'Test'
ログイン後にコピー

このクエリでは、COALESCE は SUM 関数をラップします。 Column_2 が「Test」に等しい行の Column_1 の SUM が NULL 値を返す場合、COALESCE は代わりに「0」を提供します。

デモと詳細情報

http にアクセスしてください。ソリューションのライブ デモンストレーションについては、://www.sqlfiddle.com/#!2/d1542/3/0 をご覧ください。

COALESCE の微妙な違いをさらに詳しく調べるために、異なる 3 つのテーブルが含まれる次のシナリオを検討してください。値の分布:

  • テーブル 'foo' には NULL 値と非 NULL 値が混在しています。
  • テーブル 'bar' には非 NULL 値のみが含まれています。
  • テーブル 'baz' には NULL 値のみが含まれています。

次のクエリを適用すると、

SELECT  'foo'                   as table_name,
        'mixed null/non-null'   as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    foo
UNION ALL

SELECT  'bar'                   as table_name,
        'all non-null'          as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    bar
UNION ALL

SELECT  'baz'                   as table_name,
        'all null'              as description,
        0                       as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    baz
ログイン後にコピー

次の結果が得られます。

TABLE_NAME DESCRIPTION EXPECTED_SUM ACTUAL_SUM
foo mixed null/non-null 21 21
bar all non-null 21 21
baz all null 0 0

Asご覧のとおり、COALESCE 関数は、すべての値が NULL である「baz」テーブルに対して効率的に「0」を返します。

以上が空のデータセットで MySQL の SUM 関数を使用するときに NULL の代わりに「0」を返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート