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)
);
这显然是表的创建
enter image description here这是表的输出
现在我需要做的是找到Salesman行的Sal + Comm的总和,然后找到这些总和的最大值,然后显示该最大值以及相应的ename
这是我的代码
SELECT ename, MAX (SUM (sal + comm)) max_sal
FROM emp
WHERE job = 'SALESMAN'
GROUP BY ename
我知道这几乎是正确的,但是我是SQL的新手,所以我非常卡住(使用SQL live btw)
答案 0 :(得分:0)
首先,您必须生成两个字段的和作为子查询,然后才能从子查询中获取MAX。请给我们下面的查询:
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
答案 1 :(得分:0)
尝试为
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
的行进行汇总
KEEP 将仅对这些结果而不是查询的全部结果使用MAX
函数
编辑
没有dept_no
SELECT MAX (ename) KEEP (DENSE_RANK LAST ORDER BY sal) ename,
MAX (sal + comm)
FROM scott.emp
WHERE job = 'SALESMAN'