Минимальные значения SQL для двух таблиц и повторяющейся группы - PullRequest
0 голосов
/ 08 мая 2018

Я провел некоторое исследование, и я не смог найти ответ на самом деле, я нашел немного, который работает хорошо и удивляет меня, потому что это так просто, но все еще не дает результата, как должен. Итак, у меня есть две таблицы, EMP & DEPT, и я должен ответить на вопрос «Показать название отдела вместе с самой низкой и самой высокой зарплатой в каждом отделе».

EMP


EMPNO   ENAME   JOB          MGR    HIREDATE    SAL     COMM    DEPTNO
7782    CLARK   MANAGER     7839    09/JUN/1981 2450    -       10
7934    MILLER  CLERK       7782    23/JAN/1982 1300    -       10
7788    SCOTT   ANALYST     7566    09/DEC/1982 3000    -       20
7876    ADAMS   CLERK       7788    12/JAN/1983 1100    -       20
7369    SMITH   CLERK       7902    17/DEC/1980 800     -       20
7902    FORD    ANALYST     7566    03/DEC/1981 3000    -       20
7566    JONES   MANAGER     7839    02/APR/1981 2975    -       20
7900    JAMES   CLERK       7698    03/DEC/1981 950     -       30
7499    ALLEN   SALESMAN    7698    20/FEB/1981 1600    300     30
7698    BLAKE   MANAGER     7839    01/MAY/1981 2850    -       30
7654    MARTIN  SALESMAN    7698    28/SEP/1981 1200    1250    30
7844    TURNER  SALESMAN    7698    08/SEP/1981 1500    0       30
7521    WARD    SALESMAN    7698    22/FEB/1981 1250    500     30
7839    KING    PRESIDENT    -      17/NOV/1981 5000    -       -

DEPT


DEPTNO  DNAME       LOC
10      ACCOUNTING  NEW YORK
20      RESEARCH    DALLAS
30      SALES       CHICAGO
40      OPERATIONS  BOSTON
50      PURCHASING  MIAMI

Есть идеи, как заставить это работать? Я использовал:

SELECT DEPTNO,MIN(SAL) MINI,MAX(SAL) MAXI FROM EMP 
WHERE DEPTNO IS NOT NULL GROUP BY DEPTNO ORDER BY DEPTNO,MINI,MAXI;

И у меня есть результат в том, что я хочу, но вместо названия отдела у меня есть номер отдела. Какие-нибудь советы? Как использовать INNER JOIN на нем, как при попытке сказать

ORA-00918: столбец неопределенно определен

1 Ответ

0 голосов
/ 08 мая 2018

Во-первых, я не нашел никакого соединения в вашем запросе, поэтому вам нужно включить join (т.е. INNER JOIN / LEFT JOIN)

select d.dname, min(e.sal) as MinSal, max(e.sal) as MaxSal
from emp e 
inner join dept d on d.deptno = e.deptno
group by d.dname;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...