为什么没有在甲骨文这个选择的工作,尽管在PostgreSQL的工作(第三总和应该是在同一个这样的:从员工选择SUM(工资)):2表副本从
select e1.employee_id, e1.department_id, e1.manager_id, e1.salary,
sum(e2.salary), sum(e3.salary)
from employees e1, employees e2, employees e3
where e1.department_id=e2.department_id
group by e1.employee_id, e1.department_id, e1.manager_id, e1.salary
order by 1,2;
它的工作原理在PostgreSQL中,但不在这里。在Oracle工作只有一个副本E2没有任何约束条件(当e1为原始表,并通过它的主键分组)之后,从:
select e1.employee_id, e1.department_id, e1.manager_id, e1.salary,
sum(e2.salary)
from employees e1, employees e2
where e1.department_id=e2.department_id
group by e1.employee_id, e1.department_id, e1.manager_id, e1.salary
order by 1,2;
或甚至没有,其中作为第一表的每个记录中的整个总和(这里没有任何限制):
select e1.employee_id, e1.department_id, e1.manager_id, e1.salary,
sum(e2.salary)
from employees e1, employees e2
group by e1.employee_id, e1.department_id, e1.manager_id, e1.salary
order by 1,2;
当然,我知道其他替代选择,例如:
select employee_id, department_id, manager_id, salary,
sum(salary) over (partition by department_id) as suma,
sum(salary) over()
from employees order by 2,3;
或与子查询:
select employee_id, department_id, manager_id, salary,
(select sum(e2.salary) from employees e2
where e2.department_id=e1.department_id) as suma1,
(select sum(e2.salary) from employees e2) as suma2
from employees e1 order by 1,2;
您是否知道在Oracle中执行多个表副本的方法?
*您需要*解释查询开始的目的。用简单的英语。什么是'sum(e2.salary)'和'sum(e3.salary)'应该达到? –
这是一个学术的例子,他们只是在那里,有些条件可以是不同的总和,但第三选择他们只是所有工资的总和。 – 42n4