Проблемы с получением суммы поля, сгруппированного по другому полю в C # - PullRequest
1 голос
/ 08 мая 2019

У меня есть базовый объект продукта, который содержит идентификатор, дату и количество продаж. Каждый продукт имеет один объект в день с общим объемом продаж за этот день. Я хочу иметь возможность принимать диапазон дат и возвращать самые продаваемые продукты между этими датами.

Я пытаюсь получить сумму продаж в диапазоне дат, но сгруппировать их по идентификатору продукта. Так что я могу получить общий объем продаж по продукту 123, 234,345 и т. Д. В пределах диапазона дат, а затем вернуть 10 самых продаваемых продуктов.

Это то, что я написал. Кажется, что ответ не правильный, так как каждый идентификатор продукта имеет 10 результатов. Я должен получить только 1 значение для идентификатора продукта, который является общим объемом продаж. Если бы это был SQL, я бы хотел получить сумму продаж, сгруппированную по идентификатору продукта.

var response = ElasticClient.Search<Product>(s => s
    .Index(this.Index)
    .Query(q => q
        .DateRange(dr => dr
            .Field(drf => drf.Date)
            .GreaterThanOrEquals(startDate)
            .LessThan(endDate)
        )
    )
    .Aggregations(ag => ag
        .Terms("productResults", pr => pr
            .Field(prf => prf.ProductID)
            .Size(10)
            .Aggregations(prag => prag
                .Sum("totalsales", sm => sm
                    .Field(f => f.TotalSales)
                )
            )
            .Order( o => o.Descending("totalsales"))
        )
    )
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...