编写查询以显示每个位置的 LOC 和平均工资。(标量子查询)。LOC 在 dept 表中,salary 在 emp 表中。我必须用标量子查询来做到这一点。
select loc,(select avg(sal) from emp)
from dept group by loc;
编写查询以显示每个位置的 LOC 和平均工资。(标量子查询)。LOC 在 dept 表中,salary 在 emp 表中。我必须用标量子查询来做到这一点。
select loc,(select avg(sal) from emp)
from dept group by loc;
请使用以下查询。您必须加入 emp 和 dept 表并获取结果。
使用连接:
select d.loc, avg(e.sal) from emp e
inner join dept d
on (e.dept_id = d.dept_id) -- Changed the column it the foreign key is something else
group by d.loc;
使用子查询:
select d.loc, (select avg(sal) from emp e where d.dept_id = e.dept_id)
from dept d group by d.loc;
如果您真的必须使用标量子查询,那么您可以在下面使用。
注意:如果你需要使用GROUP BY
你必须使用DISTINCT
你的 SELECT
代替。
WITH DEPT
AS (SELECT 'TR' AS LOC, 1 DEPTID FROM DUAL
UNION ALL
SELECT 'FR' AS LOC, 2 DEPTID FROM DUAL),
EMP
AS (SELECT 15 AS SAL, 1 DEPTID FROM DUAL
UNION ALL
SELECT 20 AS SAL, 2 DEPTID FROM DUAL
UNION ALL
SELECT 35 AS SAL, 1 DEPTID FROM DUAL
UNION ALL
SELECT 45 AS SAL, 2 DEPTID FROM DUAL
)
SELECT D.LOC,
(SELECT AVG(SAL)
FROM EMP E
WHERE D.DEPTID = E.DEPTID)
FROM DEPT D
不需要在查询结束时按 loc 分组
select loc,
(select avg(sal) from emp
where emp.deptno = dept.deptno) avg_sal
from dept;