Для задания домашней работы я пытаюсь найти товары для топлекса каждым продавцом в январе 2012 года с помощью AdventureWorks2014.Использование SQL Server, как я могу найти продукты для точечного маркетинга у каждого продавца в AdventureWorks2014?
Вот то, что я до сих пор:
SELECT
Person.Person.LastName, Person.Person.FirstName,
Person.Person.MiddleName,
Employee_1.JobTitle,
Sales.SalesPerson.SalesQuota, Sales.SalesOrderHeader.OrderDate,
Production.Product.Name,
SUM(distinct OrderQty) AS Expr2
FROM
Sales.SalesOrderDetail
INNER JOIN
Production.Product ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID
INNER JOIN
Sales.SalesOrderHeader ON Sales.SalesOrderDetail.SalesOrderID = Sales.SalesOrderHeader.SalesOrderID
AND Sales.SalesOrderDetail.SalesOrderID = Sales.SalesOrderHeader.SalesOrderID
AND Sales.SalesOrderDetail.SalesOrderID = Sales.SalesOrderHeader.SalesOrderID
INNER JOIN
Sales.SalesPerson ON Sales.SalesOrderHeader.SalesPersonID = Sales.SalesPerson.BusinessEntityID
AND Sales.SalesOrderHeader.SalesPersonID = Sales.SalesPerson.BusinessEntityID
AND Sales.SalesOrderHeader.SalesPersonID = Sales.SalesPerson.BusinessEntityID
AND Sales.SalesOrderHeader.SalesPersonID = Sales.SalesPerson.BusinessEntityID
INNER JOIN
HumanResources.Employee AS Employee_1
INNER JOIN
Person.Person ON Employee_1.BusinessEntityID = Person.Person.BusinessEntityID
ON Sales.SalesPerson.BusinessEntityID = Employee_1.BusinessEntityID
AND Sales.SalesPerson.BusinessEntityID = Employee_1.BusinessEntityID
WHERE
(Sales.SalesOrderHeader.OrderDate BETWEEN '2012-01-01' AND '2012-01-31')
GROUP BY
Person.Person.LastName, Person.Person.FirstName, Person.Person.MiddleName,
Employee_1.JobTitle,
Sales.SalesPerson.SalesQuota, Sales.SalesOrderHeader.OrderDate,
Production.Product.Name
ORDER BY
Person.Person.LastName, Production.Product.Name
Я не могу понять, как добавить все OrderQty для каждого отдельного продукта. В первых двух строках результатов у меня тот же продукт, продаваемый одним и тем же человеком. Я хочу добавить их вместе, а затем найти лучшие 5 продуктов, которые есть у каждого продавца?
Может ли кто-нибудь помочь?
Вы должны использовать RANK() и PARTITION BY. Существует множество примеров, таких как www.mikesknowledgebase.com/pages/SQLServer/Rank.htm –
@MikeGledhill [sql server 'rank()' versus 'row_number()'] (http://stackoverflow.com/ Вопросы/7747327/sql-rank-versus-row-number) - Я думаю, вы имели в виду 'row_number()' – SqlZim