ホームページ >データベース >mysql チュートリアル >単一の SQL クエリから複数のカウントを取得するにはどうすればよいですか?

単一の SQL クエリから複数のカウントを取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-20 16:28:10697ブラウズ

How to Get Multiple Counts from a Single SQL Query?

1 つの SQL クエリで複数のカウントを効率的に取得する

データベース クエリでは、多くの場合、さまざまな条件に基づいて複数の集計値を取得する必要があります。 一部のアプローチは非効率的かもしれませんが、簡潔な方法では CASE ステートメントを集計関数とともに使用し、この機能を持たないデータベースで PIVOT 関数の機能を効果的に模倣します。

その方法は次のとおりです:

列内のさまざまな値によって分類されたカウントが必要だとします。 たとえば、ディストリビュータとそのレベル (「幹部」または「個人」) を追跡するテーブルを考えてみましょう。 次のクエリは、さまざまなカウントを効率的に計算します:

<code class="language-sql">SELECT distributor_id,
       COUNT(*) AS total_count,
       SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END) AS exec_count,
       SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END) AS personal_count
FROM yourtable
GROUP BY distributor_id;</code>

このクエリは次のことを実行します:

  • *`COUNT()**: Calculates the total number of rows for eachdistributor_id`.
  • SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END): level が 'exec' である行をカウントします。 CASE ステートメントは、条件が true の場合は 1 を割り当て、そうでない場合は 0 を割り当てます。 SUM は、これらの 1 と 0 を合計します。
  • SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END): 同様に、level が「個人」である行をカウントします。
  • GROUP BY distributor_id: 結果をグループ化し、ディストリビューターごとに個別のカウントを提供します。

この単一のクエリは、各 distributor_id の合計数と「実行」および「個人」レベルの個別の数をすべて単一の結果セットで効率的に返します。 このアプローチは、複数の個別のクエリを実行するよりもはるかに効率的です。

以上が単一の SQL クエリから複数のカウントを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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