0

我正在尝试对一组 4000 个帐户执行一些基本的客户细分/配置文件分析。

我想根据使用情况和任期快速进行客户细分。从策略上讲,这意味着在 Oracle SQL 数据库中查询满足特定条件的 Acocunt_ID。

例如,使用情况查询将返回上个月使用时间超过 100 小时的帐户子集。

获得此帐户列表后,我想提出一组不同的分析问题。

例如,对于使用时间超过 100 小时的客户:他们使用了哪些产品?他们成为客户多久了?推荐来源是什么?

我的基本方法是:

  1. 运行客户细分查询
  2. 将每个段的 accountIds 下载到 Excel 中
  3. 制定配置文件查询
  4. 使用以下结构为每个客户群运行配置文件查询:

    Select * From fooo
    where Account_ID in ('00001','00002','00003')
    

挑战在于客户群查询返回超过 1000 个结果,因此我必须手动替换 1000 个为一组的不同批次的 account_ID。这是必需的,因为 Oracle SQL 有 1,000 个表达式限制。

另一种方法是在配置文件查询中组合客户细分查询,但这会使查询需要很长时间才能执行。

所以。问题是有一种有效的方法可以在 Oracle SQL 中创建和填充一个临时表,我可以使用它来转储客户群查询结果,然后将这些结果放入配置文件查询中以确保它们更有效地运行?

4

1 回答 1

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 */
;
于 2012-08-19T03:00:29.813 回答