显示每个位置的平均工资和位置
display the avg salary and loc of each location
编写查询以显示每个位置的 LOC 和平均工资。(标量子查询)。
LOC 在 dept table 中,salary 在 emp table 中。
我必须使用标量子查询来执行此操作。
select loc,(select avg(sal) from emp)
from dept group by loc;
请使用以下查询。您必须加入 emp 和 dept table 并获取结果。
使用连接:
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
,则必须在 SELECT
中使用 DISTINCT
。
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;
https://i.stack.imgur.com/f3q28.png
编写查询以显示每个位置的 LOC 和平均工资。(标量子查询)。 LOC 在 dept table 中,salary 在 emp table 中。 我必须使用标量子查询来执行此操作。
select loc,(select avg(sal) from emp)
from dept group by loc;
请使用以下查询。您必须加入 emp 和 dept table 并获取结果。
使用连接:
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
,则必须在 SELECT
中使用 DISTINCT
。
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;
https://i.stack.imgur.com/f3q28.png