0

営業担当者、注文、顧客の 3 つの明白なテーブルがあります。order テーブルには、すべての注文と SalesPersonID のリストがあります。

2 件以上の注文がある各販売員を検索し、2 番目に高い注文の注文額を見つけたいと考えています。MAX オーダー値を見つけるように求められた場合、このクエリを完了することができますが、2 番目に高い値に対してそれを行う簡単な方法がわかりません。

初心者ですので、お手柔らかにお願いします。前もって感謝します。

過去 3 時間、ROW_Number と Rank について読んで頭を悩ませましたが、理解できません。そして、私自身のカスタム関数を書くよりも簡単な方法があると確信しています

Select distinct 
    Orders.SalesID,  MAX(Orders.OrderAmount), SalesPerson.SalesName   
From 
    Orders, SalesPerson
Where 
    Orders.SalesID = SalesPerson.SalesID
Group by 
    Orders.SalesID, SalesPerson.SalesName
Order by 
    MAX(Orders.OrderAmount) DESC
4

1 に答える 1

2

機能を使用できrankます。各販売員には、注文金額に応じてランクが割り当てられます。最高額には 1 が割り当てられます。降順で同様に割り当てられます。

select salesname, orderamount
from (
select
rank() over(partition by s.SalesName order by o.OrderAmount desc) as rnk 
,s.SalesName  
,o.OrderAmount
From Orders o
join SalesPerson s on o.SalesID = s.SalesID) t
where rnk = 2
于 2015-11-30T02:45:07.430 に答える