N1ql SUM в массиве UNNEST
У меня есть одна корзина (Couchbase Community edition 6.5), состоящая из следующих документов:
FishingDoc
{
"boatIds": ["boatId_1","boatId_2","boatId_3"],
"areaIds": ["areaId_1","areaId_2","areaId_3"],
"total": 10,
"date": "2021-05-13T00:00:00Z",
"type": "fishing"
},
{
"boatIds": ["boatId_1","boatId_3"],
"areaIds": ["areaId_2","areaId_3"],
"total": 25,
"date": "2021-05-15T00:00:00Z",
"type": "fishing"
}
RiverDoc
{
"_id": "areaId_1",
"size": 5,
"type": "river"
},
{
"_id": "areaId_1",
"size": 10,
"type": "river"
},
{
"_id": "areaId_1",
"size": 15,
"type": "river"
}
BoatDoc
{
"_id": "areaId_1",
"name": "Small Boat",
"type": "boat"
},
{
"_id": "areaId_1",
"name": "Medium Boat",
"type": "boat"
},
{
"_id": "areaId_1",
"name": "Large Boat",
"type": "boat"
}
Мне нужен запрос, где я могу разбить всю рыболовную документацию по реке и лодке. Я получил это с помощью оператора UNNEST в следующем запросе:
SELECT river.size,
boat.name,
fishing.total
FROM bucket_name fishing
UNNEST fishing.riverIds AS river
UNNEST fishing.boatIds AS boat
WHERE fishing.type = "fishing"
Но проблема в этом запросе заключается в том, что общее значение в приведенном выше запросе является общим для всего объекта рыбной ловли.
Мне нужно получить общую сумму относительно размера не вложенной реки. Итак, мне нужно объединить и просуммировать все реки для объекта рыбной ловли и получить размер конкретной реки по отношению к общему количеству.
Вот оператор select, который я имел в виду, но понятия не имел, как на самом деле написать правильный запрос:
SELECT river.size,
boat.name,
river.size/SUM( fishing.riverIds[0].size, fishing.riverIds[1].size, fishing.riverIds[2].size ) * fishing.total
FROM bucket_name fishing
UNNEST fishing.riverIds AS river
UNNEST fishing.boatIds AS boat
WHERE fishing.type = "fishing"