亚马逊SQL求职面试问题:购买了2+的客户——在DAX中是否可行?

亚马逊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

您有一个只有两个字段的简单表:CustomerID、DateOfPurchase。列出六个月内至少购买过两次的所有客户。您可以假设该表包含过去10年的数据。此外,没有PK或唯一值。 这个问题的一个可能解决办法如下:

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