У меня есть коллекция транзакций покупки:
{....,"userId": "1","amount":3,....}
{....,"userId": "1","amount":1,....}
{....,"userId": "2","amount":4,....}
{....,"userId": "1","amount":2,....}
Мне нужно напечатать userID с максимальной суммой покупок и самой суммой.
У меня нет проблем, чтобы получить сумму покупок, используя карту уменьшить:
function map(){
emit(this.userID,{amount:this.amount});
}
затем уменьшите:
function reduce(key,value){
var sum = 0;
for ( var i=0; i<value.length; i++ ) {
sum += value[i].amount;
}
return sum;
}
Я понимаю, что мне нужно использовать функцию финализации, чтобы выбрать самый большой результат и вернуть его как одну коллекцию.
Как я могу использовать функцию финализации, чтобы выбрать самый большой результат?
Вы можете помочь?
Обновление:
С точки зрения SQL это должно быть примерно так:
select MAX(tbl.amn), tbl.uid from
(select o, userID as uid, SUM(o.amount) as amn from order o GROUP BY o.userID ) as tbl GROUP BY tbl.uid