不同表中按id列出的SQL总值总和
我试图显示每个员工的总收入,但我的查询显示了一个员工所有收入的总和 这是我的问题不同表中按id列出的SQL总值总和,sql,Sql,我试图显示每个员工的总收入,但我的查询显示了一个员工所有收入的总和 这是我的问题 SELECT Employee.FirstName , Employee.LastName, SUM(Payments.Value) AS Total_Value FROM Payments, Employee WHERE Employee.Employee_ID = Payments.Employee_ID ORDER BY Employee.Employee_ID 您的查询应该生成一个错误,因为它是一个聚
SELECT Employee.FirstName , Employee.LastName, SUM(Payments.Value) AS Total_Value
FROM Payments, Employee
WHERE Employee.Employee_ID = Payments.Employee_ID
ORDER BY Employee.Employee_ID
您的查询应该生成一个错误,因为它是一个聚合查询,没有
group by
,并且有未聚合的列
不幸的是,您使用的数据库(或其版本)不会生成错误。但您只需要一个分组依据
:
SELECT e.FirstName, e.LastName, SUM(p.Value) AS Total_Value
FROM Payments p JOIN
Employee e
ON e.Employee_ID = p.Employee_ID
GROUP BY e.FirstName, e.LastName, e.Employee_ID
ORDER BY e.Employee_ID;
注:
- 切勿在
子句中使用逗号FROM
- 始终使用正确、明确、标准、可读的连接语法
- 表别名使查询更易于编写和读取
- 如果要按员工id进行排序,则还应将其包括在
分组依据中。这也处理了不同员工可能同名的情况