ホームページ >データベース >mysql チュートリアル >SQL WHERE 句で AVG() のような集計関数を正しく使用するにはどうすればよいですか?
データベースをクエリする場合、概要統計やグループ データを計算するために AVG() などの集計関数を使用するのが一般的です。ただし、集計関数の使用を管理する特定のルールがあり、エラーが発生する場合があります。
よくあるエラーの 1 つは、「エラー 1111 (HY000)」です。 ): グループ関数の使用が無効です」。これは、WHERE 句で集計関数が誤って使用された場合に発生します。この問題を説明するための例を考えてみましょう。
問題: 次の属性を持つ "staff" テーブルがあるとします: ec、name、code、dob、salary、リストへのクエリを作成します。平均給与以上の収入を得ているスタッフ。
不正解解決策:
select * from staff where salary > avg(salary);
この間違った解決策では、集計関数 AVG() が SQL 構文で許可されていない WHERE 句に配置されています。
この問題を解決するには、次の 2 つのオプションがあります:
1. WHERE 句でのサブクエリの使用:
select * from staff where salary > (select avg(salary) from staff)
このクエリは、サブクエリとして平均給与を計算し、それを外側のクエリの各従業員の給与と比較します。
2. HAVING 句を使用したグループ化とフィルタリング:
select deptid, COUNT(*) as TotalCount from staff group by deptid having count(*) > 2
このクエリは、HAVING 句を使用して、特定のプロパティを持つグループ (この場合は 3 人以上の従業員がいる部門) を選択するための条件を指定します。 ).
集計関数は SQL の次の場所でのみ使用できることを覚えておくことが重要です。クエリ:
集計関数の誤用を回避することで、SQL クエリの有効性と効率性が確保されます。
以上がSQL WHERE 句で AVG() のような集計関数を正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。