我有一个包含两列的表,第一列是客户ID,第二列是商品ID(与商店中存在的所有商品相关联的唯一ID)。我们的数据集是这样的:如果某一天的客户购买了五件商品,那么五件商品的相同客户ID将会有五行相关,但如果在其他日子同一客户购买了4件商品,那么我们将再次拥有4行商品同样的客户ID。
图像表明id为5232的客户在某一天购买了6个不同的商品,而ID为6543的顾客在另一天购买了4个不同的商品和ID为5232的顾客又购买了4个商品,但其中两个商品是相同的身份。
我想要的是“验证特定日期某个客户购买的所有商品是否全部不同”。由于数据集非常庞大,所以我正在寻找一些可以这样做的SQL查询。
输出应为:
答案 0 :(得分:0)
SELECT
t.CustomerId
,t.Date
,COUNT(DISTINCT t.ItemId) as NumOfItems
,COUNT(DISTINCT t2.ItemId) as NumOfRepeatedItems
,CASE WHEN COUNT(t2.ItemId) > 0 THEN 'false' ELSE 'true' END as UniquePurchases
FROM
Table t
LEFT JOIN Table t2
ON t.CustomerId = t2.CustomerId
AND t.ItemId = t2.ItemId
AND t.Date > t2.Date
GROUP BY
t.CustomerId
,t.Date
您可以使用LEFT SELF JOIN
回复自己查看该客户是否在之前的某个日期购买了相同的商品。
我当然假设您可以在帖子中讨论日期时在查询中添加日期列。根据日期或共同身份对某些购买进行分组至关重要。