Мне нужна помощь, чтобы разорвать этот запрос - PullRequest
0 голосов
/ 21 апреля 2020
SELECT *
FROM(
Select P.FirstName, P.LastName, ST.Name, rank() over(partition by st.name order by sp.salesYTD desc) as ranking, SP.SalesYTD
FROM Sales.SalesTerritory ST INNER JOIN SALES.SalesPerson SP
ON SP.TerritoryID= SP.TerritoryID
INNER JOIN Person.Person P
ON SP.BusinessEntityID=P.BusinessEntityID
group by st.name, P.FirstName, P.LastName, sp.SalesYTD
) TEMP
WHERE ranking=1;

Итак, вопрос, который у меня возникает сегодня вечером, я пытаюсь получить топ-менеджера по продажам из каждого региона, но это просто показывает топ-менеджера по продажам и размещает их в каждом регионе. Есть ли способ разбить это, чтобы я мог получить топ-имя для каждого региона?

Ответы [ 3 ]

0 голосов
/ 21 апреля 2020
select p.FirstName, p.LastName, st.Name,x.MaxSales from Sales.SalesPerson sp 
inner join 
(select TerritoryID,max(salesytd) as MaxSales
from SALES.SalesPerson group by TerritoryID) x on x.TerritoryID = sp.TerritoryID and 
sp.SalesYTD = x.MaxSales
inner join Sales.SalesTerritory ST  on st.TerritoryID = sp.TerritoryID
INNER JOIN Person.Person P ON SP.BusinessEntityID=P.BusinessEntityID

Я должен был просто использовать max (), я пытался усложнить ответ.

0 голосов
/ 21 апреля 2020

Может помочь, если вы попытаетесь упростить запрос.

Можете ли вы повторно опубликовать запрос без всех псевдонимов?

Также приведите список таблиц и столбцов, используемых для избежания симуляции. -interpation.

0 голосов
/ 21 апреля 2020

Я пытаюсь найти лучшего продавца из каждого региона

Вопрос в вашем рейтинге. Вы, кажется, хотите разделить по регионам, которые, я думаю, TerritoryID:

rank() over (partition by st.TerritoryID order by sp.salesYTD desc) 

Кроме того, я не думаю, что вам нужно агрегирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...