ホームページ >データベース >mysql チュートリアル >単一の SQL クエリから複数のカウントを取得するにはどうすればよいですか?
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>
このクエリは次のことを実行します:
**: Calculates the total number of rows for each
distributor_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 サイトの他の関連記事を参照してください。