Как получить максимальную сумму из двух столбцов со связанным столбцом - SQL Live - PullRequest
0 голосов
/ 11 октября 2018
CREATE TABLE emp
(
   empno      NUMBER (4, 0),
   ename      VARCHAR2 (10),
   job        VARCHAR2 (9),
   mgr        NUMBER (4, 0),
   hiredate   DATE,
   sal        NUMBER (7, 2),
   comm       NUMBER (7, 2),
   deptno     NUMBER (2, 0),
   CONSTRAINT pk_emp PRIMARY KEY (empno)
);

Это создание таблицы, очевидно

введите описание изображения здесь Это вывод таблицы

Теперь мне нужно найти суммуSal + Comm для строк Продавца, а затем найдите максимум этих сумм, затем отобразите этот максимум плюс соответствующее имя

Вот мой код

     SELECT ename, MAX (SUM (sal + comm)) max_sal
    FROM emp
   WHERE job = 'SALESMAN'
GROUP BY ename

Я знаю, что это далеко не такправильно, но я новичок в SQL, поэтому я очень застрял (используя SQL live кстати)

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Попробуйте, как

 SELECT deptno,
         MAX (ename) KEEP (DENSE_RANK LAST ORDER BY sal) ename,
         MAX (sal + comm)
    FROM emp
   WHERE job = 'SALESMAN'
GROUP BY deptno

DENSE_RANK - агрегирует только по тем строкам, где MAXIMUM first

KEEP будет использоватьMAX работает только над этими результатами, а не с полными результатами вашего запроса

Редактировать

Без dept_no

SELECT MAX (ename) KEEP (DENSE_RANK LAST ORDER BY sal) ename,
       MAX (sal + comm)
  FROM scott.emp
 WHERE job = 'SALESMAN'
0 голосов
/ 11 октября 2018

Сначала вы должны сгенерировать сумму двух полей как подзапрос, затем вы можете получить МАКС из вашего подзапроса.пожалуйста, нам запрос ниже:

select oldQuery.ename,MAX(oldQuery.Max_Sal)

from (select ename, sum(sal+comm) Max_Sal

from emp

where job='SALESMAN'

group by ename) as oldQuery

group by oldQuery.ename
...