1. ホーム
  2. データベース
  3. その他のデータベース

SQLにおけるwhereとhavingの違いについて解説します

2022-01-23 04:59:17

コンセプト

どこ

where は、クエリの結果が返される前と、結果が返される前にデータベース内のクエリ条件を制約する制約文であり、where の後に "集約関数"を続けることはできません。

集計関数

値のグループに対して計算を行い、単一の値を返すことはグループ関数とも呼ばれ、SELECT文のGROUP BY句でHAVINGと一緒によく使われます。例えば

AVG は指定したグループの平均値を返します COUNT は指定したグループの項目数を返します MAX は指定したデータの最大値を返します MIN は指定したデータの最小値を返します SUM は指定したデータの合計を返します数値列でのみ使用でき、NULL 値は無視されます。

having は、クエリデータベースの結果が返された後にフィルタリングを行う、つまり、結果の戻り値の後で動作するフィルタ文であり、集約関数と組み合わせて使用されます。

差別化

フィルタリングに group by を使用すると、having しか使用できません。

実行順序:where>aggregates(sum,min,max,avg,count)>havingなので、whereでは集約を使用しない。

例として

スタッフテーブル

 1. 8より大きい点数は何点ですか?

whereを使用する

 持つを使う

 havingがフィルタリングしているため、エラーが報告されていますが、フィルタにemployee_scoreの値がないため、エラーが報告されています、追加すれば、わかりますよ。

そのため、whereとhavingは、主にフィルタリング対象の違いから、自由に代用できないことが多い。

2. 年齢> 20の各部門の最高得点と最低得点を教えてください。

 Whereを使うのも効果的

 ただし、実行の順番に注意が必要

注意事項

SQL文を書くときは、whereとgroup byの実行順序に注意してください。whereは前に、group byは後に実行しないと、エラーが報告されます。

まとめ

今回の記事は、SQLのwhereとhavingの違いについてです。SQLのwhereとhavingの違いについては、スクリプトハウスの過去記事を検索するか、以下の記事を引き続き閲覧してください。