ホームページ > データベース > mysql チュートリアル > SQL の WHERE と HAVING の違いを理解する

SQL の WHERE と HAVING の違いを理解する

Linda Hamilton
リリース: 2024-12-23 00:03:08
オリジナル
507 人が閲覧しました

Understanding the Difference Between WHERE and HAVING in SQL

SQL における WHERE と HAVING の違い

WHERE 句と HAVING 句はどちらも SQL クエリでデータをフィルタリングするために使用されますが、それらは異なる目的を果たし、クエリ実行のさまざまな段階で適用されます。詳細な比較は次のとおりです:


1.目的

  • WHERE 句:

    • グループ化が実行される前に行をフィルタリングします。
    • 個々の行の条件を指定するために使用されます。
  • HAVING 句:

    • GROUP BY 句が適用された後にグループ化されたデータをフィルタリングします。
    • 通常、SUM()、COUNT()、AVG() などの集計関数とともに使用されます。

2.申し込み

  • どこ:

    • 集計関数 (SUM、COUNT など) と一緒に使用することはできません。
    • 例:
    SELECT * FROM employees WHERE salary > 50000;
    
    ログイン後にコピー
    ログイン後にコピー
    • これにより、給与が 50,000 を超える従業員がフィルターされます。
  • :

    • GROUP BY によって作成されたグループをフィルタリングするために特に使用されます。
    • 条件に集計関数を使用できます。
    • 例:
    SELECT department, AVG(salary) AS avg_salary
    FROM employees
    GROUP BY department
    HAVING AVG(salary) > 60000;
    
    ログイン後にコピー
    ログイン後にコピー
    • 平均給与が 60,000 を超える部門をフィルターします。

3.実行順序

  • どこ:

    • 行がグループ化される前に、クエリの早い段階で適用されます。
    • グループ化に含まれる行に影響します。
  • :

    • GROUP BY がグループを作成した後に適用されます。
    • グループの集計結果をフィルタリングします。

4.主な違い

アスペクト WHERE 句 HAVING 句
Aspect WHERE Clause HAVING Clause
Purpose Filters rows before grouping. Filters aggregated groups.
Use with Aggregates Cannot use aggregate functions. Can use aggregate functions.
Execution Order Applied before GROUP BY. Applied after GROUP BY.
Scope Operates on individual rows. Operates on grouped data.
目的 グループ化する前に行をフィルタリングします。 集約されたグループをフィルタリングします。 集計で使用する 集計関数は使用できません。 集計関数を使用できます。 実行順序 GROUP BY の前に適用されます。 GROUP BY の後に適用されます。 スコープ 個々の行を操作します。 グループ化されたデータを操作します。 テーブル>

WHERE の使用:

SELECT * FROM employees WHERE salary > 50000;
ログイン後にコピー
ログイン後にコピー
  • 給与が 50,000 を超える個々の行をフィルターします。

HAVING の使用:

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 60000;
ログイン後にコピー
ログイン後にコピー
  • 従業員数が 10 人を超える部門をフィルタリングします。

組み合わせ例:

SELECT employee_id, first_name, salary
FROM employees
WHERE salary > 50000;
ログイン後にコピー
  • WHERE: 給与が 30,000 を超える行をフィルターします。
  • HAVING: 平均給与が 50,000 を超えるグループをフィルターします。

WHERE と HAVING を使用する場合

  • 単純な条件 (非集計) に基づいて行をフィルタリングするには、WHERE を使用します。
  • GROUP BY または集計関数を適用した後、グループをフィルタリングするには HAVING を使用します。

結論

WHERE 句はグループ化前の個々の行のフィルタリングに重点を置き、HAVING 句はグループ化後の集計データのフィルタリングを扱います。これらの違いを理解することは、行レベルとグループレベルのフィルタリングの両方を処理する効率的な SQL クエリを作成するために重要です。

こんにちは、アバイ・シン・カタヤットです!
私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
ビジネス用メールアドレス kaashshorts28@gmail.com までお気軽にご連絡ください。

以上がSQL の WHERE と HAVING の違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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