Hi Couchbase Gurus,
Need help and advice here,
How can I use JOIN, SUM() and GROUP BY for my document products and product-aggregates.
Below are the data and information you need:
// Partial Query Statement:
SELECT META(`products`).id, products.productCode, products.name, SUM(prodAgg.sales) AS totalSales, SUM(prodAgg.qtyShipped) AS totalShipped FROM `bucket` AS products LEFT JOIN `bucket` AS prodAgg ON META(products).id = prodAgg.product AND prodAgg.`type` = 'product-aggregate' WHERE products.`type` = 'product' GROUP BY prodAgg.product LIMIT 50
// unique product documents:
[
{
Id: product::0010,
name: ProductName01
productCode: 0010,
type: product
},
{
id: product::0011,
name: ProductName11,
productCode: 0011,
type: product
},
{
id: product::0014,
name: ProductName14,
productCode: 0014,
type: product,
},
]
// product-aggregate documents:
[
{
product: product::0010,
qtyShipped: 5,
sales: 65.89
},
{
product: product::0010,
qtyShipped: 15,
sales: 75.50,
type: ‘product-aggregate’
},
{
product: product::0010,
qtyShipped: 4,
sales: 10.11,
type: ‘product-aggregate’
},
{
product: product::0011,
qtyShipped: 5,
sales: 65.89,
type: ‘product-aggregate’
},
{
product: product::0011,
prod: 9,
sales: 55.40,
type: ‘product-aggregate’
},
]
My expected result would something like these:
[
{
Id: product::0010,
name: ProductName01
productCode: 0010,
type: product,
totalSales: 151.50,
totalShipped: 24
},
{
id: product::0011,
name: ProductName11,
productCode: 0011,
type: product,
totalSales: 121.29,
totalShipped: 14
},
{
id: product::0014,
name: ProductName14,
productCode: 0014,
type: product,
totalSales: 0,
totalShipped: 0
},
]
Also, how can I optimized my query? I have these number of documents for:
product-aggregates: 930977 +
products (unique): 656
Need you help guys. Thanks 