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

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

Mary-Kate Olsen
リリース: 2025-01-20 16:21:14
オリジナル
256 人が閲覧しました

How Can I Efficiently Get Multiple Counts from a Single SQL Query?

クエリ設計の最適化: 単一の SQL ステートメントを使用して複数のカウントを達成します

データ分析では、テーブル内のさまざまな条件に対して複数のカウントを取得する必要があることがよくあります。単純なクエリでは単一のカウントを返すことができますが、単一のクエリで複数のカウントを取得するには、より微妙なアプローチが必要です。

クエリ構造:

これには、CASE ステートメントと集計関数を組み合わせて使用​​できます。このメソッドは、一部のデータベース システムの PIVOT 関数の機能をシミュレートします。生成されたクエリは次の形式になります:

<code class="language-sql">SELECT distributor_id,
    COUNT(*) AS total,
    SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END) AS ExecCount,
    SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END) AS PersonalCount
FROM yourtable
GROUP BY distributor_id</code>
ログイン後にコピー

手順:

  • COUNT(*) 関数は、各 distributor_id の合計行数をカウントします。
  • CASE ステートメントは、条件付きロジックを使用して、level 列に基づいて行数を増やします。 level が「exec」の場合、ExecCount が増分され、level が「personal」の場合、PersonalCount が増分されます。
  • GROUP BY 句は、結果を distributor_id ごとにグループ化し、各ディストリビューターの一意のカウントを確保します。

この方法の利点:

  • 効率: このクエリは 1 回の実行で複数のカウントを取得するため、複数のクエリや複雑なサブクエリの必要がなくなります。
  • 明確さ: クエリ構造はシンプルで理解しやすく、保守と変更が簡単です。
  • 柔軟性: CASE ステートメントは、将来のニーズに合わせて他の条件やレベルに合わせて変更できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート