ホームページ >データベース >mysql チュートリアル >MySQL で条件付き集計を使用して「SUM IF」および「COUNT IF」機能を実現するにはどうすればよいですか?

MySQL で条件付き集計を使用して「SUM IF」および「COUNT IF」機能を実現するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-13 14:32:02451ブラウズ

How to Achieve 'SUM IF' and 'COUNT IF' Functionality in MySQL with Conditional Aggregation?

MySQL 条件付き集計: 'SUM IF' および 'COUNT IF' 機能のロックを解除する

MySQL で、合計や合計などの条件付き集計を実行します。特定の条件に基づいて値をカウントするには、CASE ステートメントを使用します。これにより、集計操作に基準を柔軟に適用できます。

次のシナリオを考えてみましょう。列「hour」と「kind」(値 1、2、または 3 を保持できる) を持つテーブルがあるとします。行数をカウントし、合計時間を計算し、「kind」が 1 に等しい行数を決定したいとします。

最初に、次のクエリを試してみます。

SELECT count(id), SUM(hour) as totHour, SUM( IF ( kind = 1, 1, 0 ) ) as countKindOne

または

SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne

ただし、これらのクエリはエラーになる可能性があります。これを解決するには、集計操作内で CASE ステートメントを利用する必要があります。

SELECT count(id), 
    SUM(hour) as totHour, 
    SUM(case when kind = 1 then 1 else 0 end) as countKindOne

この CASE ステートメントでは、「kind」列の値が 1 の場合は 1 を返し、それ以外の場合は 1 を返すように指定します。 0 を返します。これにより、「kind」が 1 に等しい行を条件付きでカウントできるようになります。

以上がMySQL で条件付き集計を使用して「SUM IF」および「COUNT IF」機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。