我正在尝试编写一个select语句,为每个名称收集一行.因此预期的产出是:
名称= Al,薪水= 30,奖金= 10
表格1
Name Salary
Al 10
Al 20
Run Code Online (Sandbox Code Playgroud)
TABLE_2
Name Bonus
Al 5
Al 5
Run Code Online (Sandbox Code Playgroud)
我该怎么写?我试着:
Select t1.Name, SUM(t1.Salary), SUM(t2.Bonus) FROM table_1 t1
LEFT JOIN table_2 t2
ON t1.Name=t2.Name
Group By 1
Run Code Online (Sandbox Code Playgroud)
我得到奖金20而不是10作为奖金.这可能是因为t1中有两行累加奖金.如何修改我的功能以获得正确的奖励?
按员工分别对表进行分组,然后加入它们:
SELECT t1.Name, Salary, Bonus
FROM (
SELECT Name, SUM(Salary) Salary
FROM table_1
GROUP BY Name
) t1
LEFT JOIN (
SELECT Name, SUM(Bonus) Bonus
FROM table_2
GROUP BY Name
) t2 ON t1.Name = t2.Name
Run Code Online (Sandbox Code Playgroud)