我有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 --|
感谢。
答案 0 :(得分:3)
如果您只希望user_id
没有username
,则根本不需要加入,因为分组只需针对user_id
中的Payments
。< / p>
SELECT
user_id,
SUM(amount) AS total
FROM Payments
GROUP BY user_id
修改:此问题已被编辑为包含输出中的用户名,因此请使用以下查询 - 必须使用 连接。
如果您想加入用户名,则只需添加FROM
和GROUP 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;