ホームページ >データベース >mysql チュートリアル >「select* from Staff where給与 > avg(salary)」が「エラー 1111 (HY000): グループ関数の無効な使用」を返すのはなぜですか?

「select* from Staff where給与 > avg(salary)」が「エラー 1111 (HY000): グループ関数の無効な使用」を返すのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 07:47:36265ブラウズ

Why Does avg(salary)" 「エラー 1111 (HY000): グループ関数の使用が無効です」を返しますか? " /> avg(salary)" Return "エラー 1111 (HY000): グループ関数の使用が無効です"? " />

トラブルシューティング「エラー 1111 (HY000): グループ機能の無効な使用」

クエリ「給与が > のスタッフから * を選択」 avg(salary)" は、"ERROR 1111 (HY000): Invalid use of group function" を返します。この問題は、WHERE 句で集計関数が正しく使用されていないために発生します。

エラーへの対処< ;/h3>

集計関数 (この場合は AVG() など)、特定の条件が満たされない限り、WHERE 句で集計を使用することはできません。HAVING 句または選択リストを含むサブクエリで集計が使用され、集計列が外部参照である場合、集計は WHERE 句で使用できます。 .

WHERE 句サブクエリの使用

アドレス指定エラーが発生した場合は、WHERE 句のサブクエリを使用してクエリを書き直します:

select *
from staff
where salary > (select avg(salary) from staff)</p>
<p>このクエリはサブクエリを使用して平均給与を計算し、平均給与を各スタッフ メンバーの給与と比較します。</p>
<p><h4>HAVING の使用句</h4></p>
<p>または、HAVING 句を使用して集計データをフィルタリングすることを検討してください。</p>
<pre class="brush:php;toolbar:false">select deptid,COUNT(*) as TotalCount
from staff
group by deptid
having count(*) > 2

このクエリの HAVING 句は、結果を 3 人以上のスタッフ メンバーがいる部門に制限します。 .

以上が「select* from Staff where給与 > avg(salary)」が「エラー 1111 (HY000): グループ関数の無効な使用」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。