【发布时间】:2021-06-13 12:06:03
【问题描述】:
我开始学习 SQL,发现了几个我想解决的练习题。您可以在下面的图片中查看问题。
据我所知,ID 为 2“Lloyd”的员工表重复了 2 次,您也可以在表付款中看到。 现在我想对这两条记录求和并显示为一个结果。 到目前为止我做了什么
SELECT p.Amount,
e.Name
FROM Employee e
INNER JOIN Payments p
ON e.EmployeeId = p.Id
到目前为止我得到的输出结果
1000 Daniel
2000 Lloyd
300 Patrick
1400 Lloyd
所以员工“劳埃德”重复了 2 次,我想将这两个结果相加为一 (2000+1400) = 3400。 谁能指导我并告诉我如何解决这个问题,我会非常感激?
更新
SELECT p.Amount,
e.Name
FROM Employee e
LEFT JOIN Payments p
ON e.EmployeeId = p.Id
GROUP BY e.Name
【问题讨论】:
-
提示:
GROUP BY。LEFT JOIN. -
在您编写的查询中,尝试使用 group by 和 join。另一种解决方案是使用 PARTITION Syntax 。如果您无法解决,请在下方评论,我将添加确切的查询
-
@InderPreet 当我使用 LEFT JOIN 和 GroupBy 时出现错误。我更新我的问题。请看一下。这是我收到的错误消息
Msg 8120, Level 16, State 1, Line 5 Column 'Payments.Amount' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. -
但是为什么有 Lloyd 2 empoyee_ids 呢?
-
@nbk 我真的不知道。我从 InterviewProcess 中找到了这个问题,我认为这是一个棘手的问题。
标签: sql sql-server database