1

なぜこの SQL ステートメントは:
select team,avg(salary) 'Average Salary' from orgchart group by team having salary <38000;

次のエラーが表示されますか?

mysql> select team,avg(salary) 給与が 38000 未満のチームごとに組織図グループから「平均給与」を選択します。エラー 1054 (42S22): 'having clause' の列 'salary' が不明です

を使用すると、.Correctgroup byは使用できず、使用できます。 以下の作品: havingwhere

select team,avg(salary) 'Average Salary' from orgchart group by team having avg(salary)<38000;

4

2 に答える 2

7

HAVING は、行のグループを評価するために使用されます。グループ化する前に、行に WHERE 条件を適用することで、行を個別に評価/除外できます。

だから、あなたの場合、それはおそらく

select team, avg(salary) 'Average Salary'
from orgchart
where salary < 38000
group by team;

給与が38000以下の人の平均給与を計算したいとします(チームごとに個別)。

ただし、実際に平均給与が 38000 未満のチームを除外しようとしている場合は正しい選択ですが、次のように、 ではなくを特定の値と比較する必要があります。havingavg(salary)salary

select team, avg(salary) 'Average Salary'
from orgchart
group by team
having avg(salary) < 38000;
于 2013-02-14T18:25:52.037 に答える
2

where節は個々の行に適用され、節はグループに適用されます。これについての詳細は、次の場所にあります。

于 2013-02-14T18:27:42.470 に答える