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