2017-04-05 55 views
0

我在sql中有两个表。计算一个表中的组的总和并加入其他表sql

table_team

t_id team_name 
1  ABC 
2  XYZ 
3  PQR 

我还有一个table_player

p_id t_id player_name payment 
10 1   Sam   1000 
20 1   jon   500 
30 2   will   680 
40 1   bob   700 
50 3   rob   890 

我想球队的这两个表总付款。

我是每个球员在特定球队和所有球队的薪金总和。

我想尝试

select t_id,team_name,sum(b.payment) as total_payment from table_team a 
left join table_player b on a.t_id = b.t_id 
+0

在您的查询中,添加组通过和它将工作...通过t_id和team_name分组 – Veljko89

回答

1

加入到计算每队支付总额的子查询:

SELECT t1.t_id, t1.team_name, t2.total_payment 
FROM table_team t1 
INNER JOIN 
(
    SELECT t_id, SUM(payment) AS total_payment 
    FROM table_player 
    GROUP BY t_id 
) t2 
    ON t1.t_id = t2.t_id 
-- WHERE t1.team_name IN ('ABC', 'XYZ') 
+0

如果我必须得到只有2队的结果,我是ABC和XYZ,我可以在哪里放置'where'team_name IN('ABC','XYZ')''内部联接 ? – Shubham

+0

不,将WHERE t1.team_name IN('ABC','XYZ')'添加到查询的最后。 –

+0

用sum()结束(由...分区)并不是更好,然后有该嵌套选择? – Veljko89

1
select t_id,team_name,sum(b.payment) as total_payment 
from table_team a 
left join table_player b on a.t_id = b.t_id 
group by t_id,team_name 
1
select t_id,team_name,sum(isnull(b.payment,0)) as total_payment from table_team a 
left join table_player b on a.t_id = b.t_id 
group by t_id, team_name 

只需添加一个group by,它应该工作