关于加入字段的SUM

时间:2012-04-23 13:55:45

标签: mysql sql

我有2张桌子:

小组:

|-- id -- username --|
|__ 1  __ user1    __|
|__ 2  __ user2    __|
|__ 3  __ user3    __|

付款:

|-- id -- user_id -- amount --|
|__ 1  __ 1       __ 1000   --|
|__ 2  __ 1       __ 5000   --|
|__ 3  __ 2       __ 3000   --|
|__ 4  __ 1       __ 4500   --|
|__ 5  __ 2       __ 1000   --|

我希望获得用户的总付款。在单个查询中。结果如下:

|-- user_id -- username -- total_payment --|
|__ 1       __ user1    __ 10500         --|
|__ 2       __ user2    __ 4000          --|

感谢。

2 个答案:

答案 0 :(得分:3)

如果您只希望user_id没有username,则根本不需要加入,因为分组只需针对user_id中的Payments。< / p>

SELECT 
  user_id, 
  SUM(amount) AS total
FROM Payments
GROUP BY user_id

修改:此问题已被编辑为包含输出中的用户名,因此请使用以下查询 - 必须使用 连接。

如果您想加入用户名,则只需添加FROMGROUP BY条款。

SELECT 
  Teams.user_id, 
  username,
  SUM(amount) AS total
FROM 
  Teams
  /* LEFT JOIN used in case a user has no payments -- will still show in the list */ 
  LEFT JOIN Payments ON Teams.user_id = Payments.user_id
GROUP BY 
  Teams.user_id, 
  Teams.username

答案 1 :(得分:0)

SELECT A.user_id,B.user_name,A.total AS total_payment
FROM
(
SELECT 
  user_id, 
  SUM(amount) AS total
FROM Payments
GROUP BY user_id
) A,
Teams B
WHERE A.user_id = B.id;