質問: グループ関数の問題でエラー! 下記実行結果により、エラーが出現して困っている次第です。 回答のほどよろしくお願い致します。 sql> describe emp; 名前 null? 型 ------------------------------ empno not null number(4) ename varchar2(10) job varchar2(9) mgr number(4) hiredate date sal number(7,2) comm number(7,2) deptno not null number(2) 問1:emp表より入社年、職種ごとの平均給与を表示しなさい。 平均給与は少数第2位を四捨五入して、$、3桁区切りカンマで表示 select hiredate as 入社年, job as 職種 , to_char(round(sal,1),'$9,999') as 平均給与 from emp group by hiredate,job ora-00979: group byの式ではありません 問2:上司番号と、その上司の部下の中で給与が最低である従業員の給与を表示しなさい。 上司が存在しない従業員を除き、最低給与が1000ドル以下のグループも除外とし、結果を表示。 select mgr as 上司番号, min(sal) as 最低給与, from emp where mgr not is null group by mgr having 1000 < sal ora-00936: 式がありません。
回答: 内容についての精査はしていませんが、文法についてだけお答えします。 問1 to_char(round(sal,1),'$9,999')は単一行関数なので、 to_char(avg(round(sal,1)),'$9,999')とした方がよいでしょう 問2 (1)最低給与の後ろのカンマは余計です (2)havingの後ろはグループ関数なので、 having 1000 < min(sal)とした方が良いでしょう。 これで取り敢えずエラーはなくなります