Postgresql:9.3 我有一个很长的日志"购物车ID"以及"产品ID"每个购物车包含。 我正在寻找一种方法来创建拥有最多"产品ID"共同的。 "产品ID"可以同时在多个组中。
因此,我需要购物车ID""产品ID"和组的名称(组1,组2,......)。
如果有人提示如何做到这一点。我知道SQL查询并不理想,但它是我目前所拥有的。
编辑:通过以下查询,我知道xx购物车的群组共有xx个产品。
WITH a AS (
SELECT Shopping_Cart.Product_Id AS Product_Id, count(Shopping_Cart.Product_Id) AS "count" FROM Shopping_Cart
GROUP BY Shopping_Cart.Product_Id
ORDER BY "count"
)
SELECT a."count" AS "Product in Common", count(DISTINCT Shopping_Cart.id) AS "Shopping Cart Count" FROM a
RIGHT JOIN Shopping_Cart ON Shopping_Cart.Product_Id = a.Product_Id
GROUP BY a."count"
它比没有好,但如果我有7个购物者,1,2,3和7个购物者的商品为4,5,6,则他们属于同一组购物者,共有3个商品。我需要将它们分开。
答案 0 :(得分:0)
我打赌你可能希望通过CartId循环访问购物桌上的Product表。也许像是
DECLARE ProdId Product%rowtype;
BEGIN 选择产品"产品ID"来自ProductTable
LOOP
SELECT ProdId,ProductId,count(CartId)
From ShoppingTable where CartId in
(Select Distinct CartId from Shopping where ProductId = ProdId)
GROUP BY ProdId,ProductId
ORDER by count(CartId) Desc
RETURN NEXt ProdId;
END LOOP;
RETURN;
END
LANGUAGE' plpgsql' ;