У меня есть такая таблица данных:
Employee1 Product1 ProductGroup1 Quantity SalesDate
Employee1 Product1 ProductGroup1 Quantity SalesDate
Employee1 Product2 ProductGroup1 Quantity SalesDate
Employee1 Product2 ProductGroup1 Quantity SalesDate
Employee2 Product1 ProductGroup1 Quantity SalesDate
Employee2 Product1 ProductGroup1 Quantity SalesDate
Employee2 Product1 ProductGroup1 Quantity SalesDate
Employee2 Product1 ProductGroup1 Quantity SalesDate
Employee2 Product2 ProductGroup1 Quantity SalesDate
Employee2 Product2 ProductGroup1 Quantity SalesDate
Есть несколько сотрудников, несколько продуктов, несколько групп продуктов, несколько дат продаж. В службах отчетности у меня есть матрица, где родительская группа - сотрудник, дочерняя группа - продукт, а группа столбцов - дата продажи. Мне нужно ранжировать продукты, чтобы получить первые 5 и поместить другие в другой список. Проблема в том, что мне нужно ранжировать продукт внутри группы сотрудников, а у продукта может быть несколько дат продажи, а мне нужно оценить все. В SQL теперь у меня есть:Rank() Over (partition by DataTable.ProductGroup1, DataTable.Employee Order by Sum(Quantity) desc) as Rank
Но это дает мне неправильный результат, потому что один и тот же продукт имеет разное ранговое значение, потому что ранговая функция ранжирует с использованием количества в разные даты продаж. как мне написать sql, чтобы он возвращал мне данные со всеми датами продаж, рейтингами автобусов, используя количество, суммированное со всех дат?
РЕДАКТИРОВАТЬ:
Некоторые наборы данных, чтобы объяснить, что я получаю и что мне нужно.
//DATA I HAVE
Employee_col Product_col ProductGroup_col Quantity_col SalesDate_col
Employee1 Product1 ProductGroup1 100 2012-01
Employee1 Product1 ProductGroup1 200 2012-02
Employee1 Product2 ProductGroup1 50 2012-01
Employee1 Product2 ProductGroup1 80 2012-02
Employee2 Product1 ProductGroup1 200 2012-01
Employee2 Product1 ProductGroup1 70 2012-02
Employee2 Product2 ProductGroup1 20 2012-01
Employee2 Product2 ProductGroup1 450 2012-02
//RESULT I GET
Employee_col Product_col ProductGroup_col Quantity_col SalesDate_col Rank_col
Employee1 Product1 ProductGroup1 100 2012-01 2
Employee1 Product1 ProductGroup1 200 2012-02 1
Employee1 Product2 ProductGroup1 50 2012-01 4
Employee1 Product2 ProductGroup1 80 2012-02 3
Employee2 Product1 ProductGroup1 200 2012-01 2
Employee2 Product1 ProductGroup1 70 2012-02 3
Employee2 Product2 ProductGroup1 20 2012-01 4
Employee2 Product2 ProductGroup1 450 2012-02 1
//RESULT I NEED
Employee_col Product_col ProductGroup_col Quantity_col SalesDate_col Rank_col
Employee1 Product1 ProductGroup1 100 2012-01 1
Employee1 Product1 ProductGroup1 200 2012-02 1
Employee1 Product2 ProductGroup1 50 2012-01 2
Employee1 Product2 ProductGroup1 80 2012-02 2
Employee2 Product1 ProductGroup1 200 2012-01 2
Employee2 Product1 ProductGroup1 70 2012-02 2
Employee2 Product2 ProductGroup1 20 2012-01 1
Employee2 Product2 ProductGroup1 450 2012-02 1