2017-10-10 7 views

答えて

0

f_nameはグループの集約ではありません。例えばmin(f_name)を試してみてください。

「平均(age)>年齢の場合」;期待どおりに動作します。

0

selectにはf_nameがありますが、部門別に集計しています。

あなたのhaving句には、集計と非集計が混在しています。あなたはそれがSELECT文でのみGROUP BY列が含まれていることができるかどう

select s.* 
from (select s.*, avg(s.age) over (partition by s.dept_id) as avg_age 
     from students s 
    ) s 
where s.age > avg_age; 
1

はおそらく、あなたはこのような何かをしたいです。また、GROUP BY句を使用している場合は、GROUP BYにすべての非集計関数列を含める必要があります。

試してみてください。

select f_name, avg(age), dept_id 
from students 
group by f_name, dept_id 
--not sure about this next line either 
--having avg(age) > age; 
関連する問題