SQL における HAVING 句と WHERE 句の違いと応用
集計関数と SQL クエリを使用する場合、HAVING 句と WHERE 句の間には大きな違いがあります。 SQL スキルを向上させるために、それらの違いを詳しく見てみましょう。
HAVING: 集計後のフィルタリング
HAVING は、集計操作の完了後に集計値に条件を適用するために使用されます。つまり、集計後のフィルタとして機能し、集計結果が特定の条件を満たしているかどうかをチェックします。
たとえば、次のクエリはマサチューセッツ州 (MA) の都市とそれに対応する住所の数を取得します。
<code class="language-sql">SELECT City, COUNT(1) AS CNT FROM Address WHERE State = 'MA' GROUP BY City;</code>
結果をさらに絞り込み、住所が 5 つ以上ある都市のみを表示するには、HAVING 句を使用します。
<code class="language-sql">SELECT City, COUNT(1) AS CNT FROM Address WHERE State = 'MA' GROUP BY City HAVING CNT > 5;</code>
WHERE: 集計前のフィルター
HAVING とは異なり、WHERE は集計前のフィルタリングに使用されます。集計プロセスの前に条件を評価します。これは、指定された WHERE 条件を満たすレコードのみが集計に含まれることを意味します。
前の例を続けると、WHERE 句を使用して、住所を計算する前に選択範囲をマサチューセッツ州の都市に制限できます。
<code class="language-sql">SELECT City, COUNT(1) AS CNT FROM Address WHERE State = 'MA' AND City = 'Boston' GROUP BY City;</code>
主な機能の比較
特性 | HAVING | WHERE |
---|---|---|
时间 | 聚合之后 | 聚合之前 |
目的 | 聚合后过滤 | 聚合前过滤 |
作用范围 | 应用于聚合值 | 应用于单个记录 |
概要
HAVING と WHERE は両方とも SQL クエリの最適化において重要な役割を果たします。さまざまな機能と実行時間を理解することで、結果を効果的に絞り込み、データ分析能力を強化できます。
以上がSQL の HAVING と WHERE: フィルタリングに各句をいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。