在消费者支出数据中,我如何找到客户完成的第一笔交易。例如,如果您有50个交易,并且您有10个不同的客户完成了这50个交易,那么我如何才能找到这10个客户中的每个客户完成的第一笔交易? 在SAS或SQL中执行此操作的建议确实会有所帮助。
答案 0 :(得分:0)
我在SQL中回答。
如果您是交易日期,请使用
Select min(transactiondate) from [Your Transaction table]
group by customer.
或者您可以直接使用
Select min(transaction) from [Your Table]
group by Customer.
使用group by会区分每位客户,Min()
会找到每位客户的最短或第一个交易日期。您可以在where子句中添加其他条件以过滤结果集。喜欢这个
Select min(transaction) from [You Table]
where date>=[Starting transaction date]
and date<=[End transactiondate].
答案 1 :(得分:0)
在这里,您需要每个客户的第一笔交易,这就是为什么我使用RANK函数并根据customer_id分区记录的原因。此函数将为每个客户的第一笔交易返回值1,因此我在where子句中使用firsttransaction = 1,而我们不能直接在where子句中使用RANK函数,因此在这里我使用INLINE概念将条件应用于RANK函数
Select * from
(
Select customer,
RANK()
OVER(partition by customer_id
Order by transaction_date) firsttransaction
From table_name
)
Where firsttransaction=1
答案 2 :(得分:0)
这里您需要每个客户的第一笔交易,这就是为什么我在这里使用RANK()
函数并对customer_id的分区记录进行分区,该函数将为每个客户的第一笔交易返回值1,所以我使用{{1} }中的firsttransaction=1
子句中,我们不能直接在where
子句中使用RANK()
func,所以这里我使用INLINE概念在where
函数上应用条件
RANK()