使用avgsql查询的内部连接

使用avgsql查询的内部连接,sql,Sql,我是sql新手,我正在处理具有id和金额行的工资表(按年份-每个员工最多可以有30行工资)和具有id名称和姓氏行的员工表,我想获得每个员工的平均工资以及名字和姓氏,我不确定为什么它不适用于我: SELECT t.FIRST_NAME, AVG(g.SALARY) FROM SALARIES AS g JOIN EMPLOYEES as t ON t.EMP_NO = g.EMP_NO GROUP BY t.EMP_NO; 首先,需要选择所需的列 其次,您需要使SELECT列与

我是sql新手,我正在处理具有id和金额行的工资表(按年份-每个员工最多可以有30行工资)和具有id名称和姓氏行的员工表,我想获得每个员工的平均工资以及名字和姓氏,我不确定为什么它不适用于我:

SELECT t.FIRST_NAME, AVG(g.SALARY)
  FROM SALARIES AS g
  JOIN EMPLOYEES as t
    ON t.EMP_NO = g.EMP_NO
 GROUP BY t.EMP_NO;

首先,需要选择所需的列

其次,您需要使
SELECT
列与
groupby
列一致

因此,我建议:

SELECT e.EMP_NO, e.LAST_NAME, e.FIRST_NAME, AVG(s.SALARY)
FROM SALARIES s JOIN
     EMPLOYEES e
     ON e.EMP_NO = s.EMP_NO
GROUP BY e.EMP_NO, e.LAST_NAME, e.FIRST_NAME;

这将取
工资
中与
员工
中的一行匹配的所有行的平均值。如果
工资
对一名员工有多行,例如存储随时间的变化,那么平均值可能不是您想要计算的值。

首先,您需要选择所需的列

其次,您需要使
SELECT
列与
groupby
列一致

因此,我建议:

SELECT e.EMP_NO, e.LAST_NAME, e.FIRST_NAME, AVG(s.SALARY)
FROM SALARIES s JOIN
     EMPLOYEES e
     ON e.EMP_NO = s.EMP_NO
GROUP BY e.EMP_NO, e.LAST_NAME, e.FIRST_NAME;

这将取
工资
中与
员工
中的一行匹配的所有行的平均值。如果
salaries
为一名员工设置了多行(例如存储随时间的变化),则平均值可能不是您想要计算的值。

仅标记您使用的数据库。仅标记您使用的数据库。