在SQL查询中检索属性时出现问题

在SQL查询中检索属性时出现问题,sql,join,aggregate-functions,Sql,Join,Aggregate Functions,我有以下关系模式 员工(Fname、Lname、Ssn、工资、Dno) 部门(数据名称、数据编号、经理) 对于每个部门,我想检索部门编号、经理姓名和部门平均工资 SELECT D.Dnumber, AVG(E.Salary) FROM EMPLOYEE E JOIN DEPARTMENT D ON E.Dno = D.Dnumber GROUP BY D.Dnumber 下面是我的尝试。我得到了部门编号和平均工资,但我不知道如何在不过滤行的情况下检索部门经理姓名,这会更改平均工资的值 SELE

我有以下关系模式

员工(Fname、Lname、Ssn、工资、Dno)

部门(数据名称、数据编号、经理)

对于每个部门,我想检索部门编号、经理姓名和部门平均工资

SELECT D.Dnumber, AVG(E.Salary)
FROM EMPLOYEE E JOIN DEPARTMENT D ON E.Dno = D.Dnumber
GROUP BY D.Dnumber
下面是我的尝试。我得到了部门编号和平均工资,但我不知道如何在不过滤行的情况下检索部门经理姓名,这会更改平均工资的值

SELECT D.Dnumber, AVG(E.Salary)
FROM EMPLOYEE E JOIN DEPARTMENT D ON E.Dno = D.Dnumber
GROUP BY D.Dnumber

如何在此查询中检索经理的名字?

可能是通过SSN链接到经理。对我来说,使用个人识别信息(PII)来达到这样的目的是个坏主意

在任何情况下,您都需要两个联接才能获得第一个名称,因此您已经成功了一半:

select d.dnumber, avg(e.salary), em.fname
from employee e join
     department d
     on e.dno = d.dnumber left join
     employee em
     on e.ssn = em.mgr_ssn
group by d.dnumber, em.fname;

获取每个部门的经理ID和平均值。然后加入以获取名称。这是一个常见问题。在考虑发帖之前,请阅读本手册,谷歌搜索任何错误信息,以及关于您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括或不包括您的特定姓名/字符串/数字,“site:stackoverflow.com”和标签;阅读许多答案。如果你发布一个问题,用一句话作为标题。反思你的研究。当您发布代码问题时:。