COALESCE を使用して MySQL の SUM 関数で null 値をどのように処理しますか?

DDD
リリース: 2024-11-02 08:47:29
オリジナル
675 人が閲覧しました

How do you handle null values in MySQL's SUM function with COALESCE?

COALESCE を使用して MySQL の SUM 関数で Null 値を処理する方法

MySQL で SUM 計算を実行する場合、次のようなシナリオの処理が困難になることがあります。指定された基準を満たす値がないため、NULL 出力が返されます。この問題に対処するために、MySQL は COALESCE 関数を提供します。これは、NULL 値の場合にデフォルトの戻り値を指定する便利な方法を提供します。

次の MySQL 関数を考えてみましょう:

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

Column_2 のエントリに「Test」というテキストが含まれていない場合、この関数は NULL を返します。ただし、値が見つからない場合は、NULL ではなく 0 を返す方が望ましい場合もあります。

これを実現するには、以下に示すように、SUM 計算内で COALESCE 関数を利用できます。

SELECT COALESCE(SUM(column),0)
FROM   table
WHERE  ...
ログイン後にコピー

COALESCE 関数のデフォルト値として 0 を指定することで、SUM 計算の NULL 値を効果的に 0 に置き換え、(SUM 基準を満たす値がない場合でも) 結果が常に整数になるようにします。

追加情報

COALESCE 関数は多用途であり、合計計算で NULL 値を処理する以外にもさまざまなシナリオで使用できます。これは、欠落しているデータまたは不完全なデータにフォールバック値を提供する必要がある状況で特に役立ちます。

COALESCE の使用法と利点をさらに詳しく説明するために、さまざまなデータ型を含む次のテーブルの例を検討してください。

  • foo: 数値と NULL 値の両方が含まれます
  • bar: null 以外の数値のみが含まれます
  • baz: NULL 値のみが含まれます

これらのテーブルの値の合計を計算するクエリ内の COALESCE 関数を使用すると、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

結果から明らかなように、COALESCE は、すべての値が NULL である baz テーブルに対して SUM 計算が常に 0 を返し、テーブル foo と bar に対して期待される合計 21 を提供することを保証します。

以上がCOALESCE を使用して MySQL の SUM 関数で null 値をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!