1

私は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          --|

ありがとう。

4

2 に答える 2

3

user_idなしのみが必要な場合は、グループ化はinusernameに対してのみ発生するため、参加する必要はまったくありません。user_idPayments

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

編集:質問はその後、出力にユーザー名を含めるように編集されているため、以下のクエリを使用してください-結合必要です。

ユーザー名に参加したい場合は、FROMandGROUP 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
于 2012-04-23T13:57:31.880 に答える
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;
于 2012-04-23T14:02:40.973 に答える