2

我正在努力使用平均列的正确语法。我所拥有的——来自 RavenDB Studio 编辑器:

地图:

from area in docs.Level5_AdministrativeAreas
select new 
{
     area.NAME_4,
     totalPrice = area.pricePerSquareMetre,
     areaCount = 1,
     priceAverage = 0
}

减少:

from result in results
group result by new { result.NAME_4 } into g
select new 
{
   NAME_4 = g.Key.NAME_4,
   totalPrice = g.Sum(x => x.totalPrice),
   areaCount = g.Sum(x => x.areaCount),
   priceAverage = totalPrice / areaCount
}

计数和总价计算正确,但我不知道如何引用totalPriceareaCount.

是否需要额外的选择块?我尝试了“g.totalPrice”和“g.priceAverage”,但它没有被识别。

谢谢您的帮助 !

4

2 回答 2

5

Reduce 部分需要是这样的:

减少

from result in results
group result by new { result.NAME_4 } into g
let theCount = g.Sum(x => x.areaCount)
let theTotal = g.Sum(x => x.totalPrice)
select new 
{
   NAME_4 = g.Key.NAME_4,
   totalPrice = theTotal,
   areaCount = theCount ,
   priceAverage = theTotal / theCount 
}

=> 阅读MapReduce 索引的常见陷阱部分

于 2020-03-01T08:08:56.070 回答
2

可能不理想,但这有效(谈论不只见树木不见森林......)

priceAverage = g.Sum(x => x.totalPrice) / g.Sum(x => x.areaCount)
于 2020-02-29T18:09:14.557 回答