1

顧客 ID (CID) で結合された Customer テーブルと Payment テーブルがあります。Payment テーブルには、Amount 列があります。一部の行には正の金額 (借りている) がありますが、他の行には負の金額 (支払った) があります。

プラスの金額とマイナスの金額を合計したときに、まだお金を借りている顧客を知りたい。

残高だけを見たい場合は、次のようにします。

SELECT Customer.FirstName, Customer.LastName, Customer.AccountNumber, SUM(Amount) As Balance
FROM Customer
 JOIN Payment
   ON Customer.CID = Payment.CID
GROUP BY Customer.AccountNumber

残高が 0 以下の場合にその顧客の行を返さないようにするにはどうすればよいですか?

編集: HAVING私が知らなかったキーワードでした。たくさんの正解ありがとうございます!

4

4 に答える 4

2
SELECT Customer.FirstName, Customer.LastName, Customer.AccountNumber, SUM(Amount) As Balance
FROM Customer
 JOIN Payment
   ON Customer.CID = Payment.CID
GROUP BY Customer.AccountNumber
HAVING Balance>0
于 2013-08-20T23:52:31.127 に答える
2

HAVING キーワードを使用すると、group by 関数に基づいて選択できます。

SELECT Customer.FirstName, Customer.LastName, Customer.AccountNumber, SUM(Amount) As Balance
FROM Customer
JOIN Payment
ON Customer.CID = Payment.CID
GROUP BY Customer.AccountNumber
HAVING SUM(Amount) > 0
于 2013-08-20T23:53:28.973 に答える
1
SELECT c.FirstName, c.LastName, c.AccountNumber, p.Amount AS Balance
FROM Customer c 
JOIN Payment p
ON c.CID = p.CID
GROUP BY c.AccountNumber
HAVING SUM(p.Amount) > 0
于 2013-08-21T00:01:49.070 に答える
0
select customers.name, sum(payments.amount) balance  
from customers join payments on customers.id = payments.cid
group by customers.id having balance > 0
于 2013-08-20T23:54:52.967 に答える