-5

各職種の平均給与よりも低い給与を受け取っている従業員の名前を見つけるには、次の解を使用します。

SELECT ENAME,JOB,SAL
FROM EMP
   WHERE SAL<ALL
    (SELECT AVG(SAL) FROM EMP
      GROUP BY JOB);

句で指定されたすべての列がSELECT句に存在する必要がありGROUP BYますが、ここではそうではありません。内部クエリのSELECT句には、GROUP BY 句で指定されていますが、job が含まれていません。

4

1 に答える 1

1

私の理解が正しければSAL、各JOB.

SELECT  a.*
FROM    EMP a
        INNER JOIN
        (
            SELECT  JOB, AVG(SAL) avg_sal
            FROM    EMP
            GROUP   BY JOB
        ) b ON a.JOB = b.JOB
WHERE   a.SAL < b.avg_sal
于 2013-01-27T07:21:39.443 に答える