我正在尝试对一组4000个帐户执行一些基本的客户细分/个人资料分析。
我希望根据使用情况和使用期限进行快速客户细分。从战术上讲,这意味着查询符合特定条件的Acocunt_ID的Oracle SQL数据库。
例如,使用情况查询将返回超过>的帐户子集上个月使用100小时。
我有这个帐户列表后,我想问一组不同的分析问题。
例如,对于使用时间超过100小时的客户: 他们使用了什么产品? 他们成为客户多久了? 什么是推荐来源?
我的基本方法是:
使用以下结构运行每个客户群的配置文件查询:
Select * From fooo
where Account_ID in ('00001','00002','00003')
挑战在于客户群查询返回的结果超过1000个,因此我必须手动替换1000个不同批次的account_ID。由于Oracle SQL的1,000表达式限制,这是必需的。
另一种方法是在配置文件查询中组合客户群查询,但这会使查询需要很长时间才能执行。
SO。 问题是有一种有效的方法来创建和填充Oracle SQL中的临时表,我可以使用它来转储客户群查询结果,然后将这些结果抛出到配置文件查询中,以确保它们更有效地运行?
答案 0 :(得分:0)
使用ROW_NUMBER()窗口聚合函数根据AccountID的ASCENDING顺序分配RowID,然后使用WHERE子句处理 n 可接受的行数:
SELECT DT1.*
FROM (SELECT f1.*
, ROW_NUMBER() OVER (ORDER BY F1.AccountID) AS RowID_
FROM foo f1
) DT1
WHERE DT1.RowID_ BETWEEN 1 and /* n */
;