1

以下のようにクエリ結合2テーブルがあります。

SELECT * FROM Staff s INNER JOIN Account a on s.AccNo = a.AccNo WHERE a.Status = 'Active'

結果は次のとおりです。

 AccNo | Name | ID
 ------------------ 
   1   | Alex | S01
   2   | John | S02

スタッフ ID を取得したら、次のように 2 番目のクエリを作成して、最大販売数を調べます。

SELECT s.ProductID,Max(s.Amount) from Sales s WHERE StaffID = 'S01' GROUP BY s.ProductID

スタッフ 'S01' の最大販売額は次のとおりです。

ProductID  | Amount
------------------
   Cloth   | 2000

これら2つのクエリを組み合わせて、以下のような結果になるにはどうすればよいですか? ありがとう

 AccNo | Name | ID | Amount
 -------------------------- 
   1   | Alex | S01 | 2000
   2   | John | S02 | 5000
4

4 に答える 4

1

サブクエリを作成して結合できます。

SELECT a.AccNo, b.Name, b.ID, c.maximum 
FROM transaction as a 
INNER JOIN Account as b 
ON a.AccNo = b.AccNo
LEFT JOIN (SELECT StaffID, Max(Amount) as maximum FROM Sales GROUP BY StaffID) as c 
ON c.StaffID = b.ID
WHERE b.Status = 'Active'

SQLFiddleの例を参照してください(スキーマを推測しようとしました)

于 2013-09-05T06:55:12.973 に答える
0

これはうまくいくはずだと思います

参加して、各スタッフに関連付けられた最大量を取得するだけです

SELECT t.AccNo , t.Name, t.ID, s.ProductID, Max(s.Amount) FROM Transaction t

INNER JOIN Account a ON t.AccNo = a.AccNo

INNER JOIN Sales s ON s.StaffID = a.ID

WHERE a.Status = 'アクティブ';

ありがとう

于 2013-09-05T07:08:47.850 に答える
0

だからあなたがしたいのは、staffId の sales に参加してから group.

SELECT a.AccNo,a.Name,a.ID,Max(s.Amount) 
FROM Transaction t 
INNER JOIN Account a on t.AccNo = a.AccNo 
INNER JOIN Sales s on s.staffId = a.ID
WHERE a.Status = 'Active'
GROUP BY a.AccNo,a.Name,a.ID
于 2013-09-05T06:44:06.577 に答える
0

次のようなことを試すことができます:

Select Account.*, Max(Sales.amount) from Sales 
JOIN Account ON Sales.StaffID = Account.ID 
where Account.status = 'Active'
group by Sales.ProductID, Account.AccNo, Account.Name, Account.ID

正直なところ、クエリで Transascation テーブルを使用する理由がわかりません。使用しないからです。

于 2013-09-05T06:53:16.660 に答える