亚马逊SQL求职面试问题:购买了2+的客户——在DAX中是否可行?
您有一个只有两个字段的简单表:CustomerID、DateOfPurchase。列出六个月内至少购买过两次的所有客户。您可以假设该表包含过去10年的数据。此外,没有PK或唯一值。 这个问题的一个可能解决办法如下:亚马逊SQL求职面试问题:购买了2+的客户——在DAX中是否可行?,sql,dax,Sql,Dax,您有一个只有两个字段的简单表:CustomerID、DateOfPurchase。列出六个月内至少购买过两次的所有客户。您可以假设该表包含过去10年的数据。此外,没有PK或唯一值。 这个问题的一个可能解决办法如下: SELECT DISTINCT CustomerID FROM yourTable t1 WHERE EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.CustomerID = t1.CustomerID AND
SELECT DISTINCT CustomerID
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.CustomerID = t1.CustomerID AND
t2.DateOfPurchase > t1.DateOfPurchase AND
t2.DateOfPurchase <= DATEADD(month, 6, t1.DateOfPurchase));
我想知道我们是否可以在DAX中做类似的事情。为了简单起见,让我们假设所有内容都在一个表中,并且没有关系
谢谢你在
为了简单起见
也许这个
Table =
SUMMARIZE(
FILTER(
yourTable,
VAR CurrentCustomerID = yourTable[CustomerID]
VAR CurrentDateOfPurchase = yourTable[DateOfPurchase]
RETURN
NOT ISEMPTY(
CALCULATETABLE(
VALUES(yourTable[CustomerID]),
ALL(yourTable),
yourTable[CustomerID] = CurrentCustomerID,
yourTable[DateOfPurchase] < CurrentDateOfPurchase,
yourTable[DateOfPurchase] >= EDATE(CurrentDateOfPurchase,-6)
)
)
),
yourTable[CustomerID]
)
更新
由于没有更多的答案,我正在分享模拟数据,以便鼓励其他人作出回应,我们都可以从中学习一些东西。大约50000个客户,100000笔交易,10年。日期格式:MDY