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 の使用法と利点をさらに詳しく説明するために、さまざまなデータ型を含む次のテーブルの例を検討してください。
これらのテーブルの値の合計を計算するクエリ内の 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 サイトの他の関連記事を参照してください。