Мой документ содержит 183 документа типа Person и 2723 документа типа Purchase. В основном человек покупает продукты. Примеры документов следующие. Человек мог никогда ничего не покупать.
{"Type" : "Person", PersonID: 1, InitialFee: 100, "MemberGroupTypeID" : 1, _id:"Person_1_1"},
{"Type" : "Person", PersonID: 2, InitialFee: 200, "MemberGroupTypeID" : 1, _id:"Person_1_1"},
{"Type" : "Purchase", PersonID: 1, PurchaseID:1, Value: 5, "MemberGroupTypeID" : 1, _id:"Purchase_1_1_1"},
{"Type" : "Purchase", PersonID: 1, PurchaseID:2, Value: 10, "MemberGroupTypeID" : 1, _id:"Purchase_2_1_1"},
{"Type" : "Purchase", PersonID: 1, PurchaseID:3, Value: 25, "MemberGroupTypeID" : 1, _id:"Purchase_3_1_1"}
В основном ожидаемый результат:
MemberGroupTypeID: 1, FeesTotal: 300, TotalPurchasesCost: 40
У меня есть следующий запрос, который возвращает правильную общую стоимость покупки для каждого типа группы участников но FeesTotal слишком высок, и я не знаю, как оно вообще получается. Я имею в виду, что я не смог определить связь между ожидаемым числом и фактическим FeesTotal, который я получаю после выполнения запроса:
SELECT SUM(person.InitialFee) AS FeesTotal,
SUM(purchase.Value) as TotalPurchasesCost,
person.MemberGroupTypeID
FROM bucket person
LEFT JOIN bucket purchase
ON person.MemberGroupTypeID= purchase.MemberGroupTypeID
WHERE person.Type = "Person" AND purchase.Type = "Purchase" AND
person.PersonId = purchase.PersonId
GROUP BY person.MemberGroupTypeID;