根据呼叫日志状态层次结构计算类别中的唯一客户
Posted
技术标签:
【中文标题】根据呼叫日志状态层次结构计算类别中的唯一客户【英文标题】:Counting Unique Customers in Categories Based on Call Log Status Hierarchy 【发布时间】:2020-11-22 23:08:09 【问题描述】:我有一张客户通话记录表。出于我想要做的目的,该表仅包含客户 ID 和呼叫状态。每个客户可以有多个具有不同呼叫状态的条目。
例如表:
Customer Status
1 Didn't Reach - No Voicemail
3 Left a Voicemail
2 Left a Voicemail
1 Left a Voicemail
1 Talked With Customer
3 Didn't Reach - No Voicemail
2 Talked With Customer
2 Left a Voicemail
2 Talked With Customer
我的输出应该是:
Status # of Customers
Talked With Customer 2
Left a Voicemail 1
Didn't Reach - No Voicemail 0
这是因为从 3 个不同的状态来看,他们的层级如下:
1. Talked with Customer
2. Left a Voicemail
3. Didn't Reach - No Voicemail
患者应仅计入最高类别 (1>2>3),这就是为什么在我的示例中,“未联系 - 无语音邮件”中没有客户,因为他们所有人都至少有一个留下语音邮件。
希望这是有道理的,提前感谢!
【问题讨论】:
编辑问题以显示更大的数据样本和所需的输出。您有状态层次结构表吗? 我可能会分两步完成。 (1) 将文本描述符转换为您定义它们的数字,可能在新列中,以及 (2) 应用MINIFS
-- 或者如果您的 Excel 版本没有它,请使用等效的数组公式-- 查找给定客户 ID 的最小编号。
如果数据在Access表中,为什么会涉及Excel?
@June7 我用示例 + 预期输出对其进行了编辑。我标记 Access 的原因是因为这是从 Access 表中导出为 Excel 电子表格的数据。目前还没有层次结构表,但如果需要,我可以在电子表格中创建它。
好的,但是为什么要将原始数据导出到 Excel 并在那里进行操作呢? Access 中的查询应该能够产生此输出。
【参考方案1】:
一条 SQL 语句可以产生这个输出。如果想要显示所有状态,即使没有状态数据,也需要状态层次结构表。
可以将查询导出到 Excel 或 Excel 可以链接到查询对象。或者 Excel VBA 可以连接到 Access db 并使用 SQL 语句将数据拉到记录集对象,并使用 CopyFromRecordset 方法将数据保存到工作表范围。
SELECT StatusHierarchy.StatusDesc, Count(Query1.Customer) AS CntStat
FROM (SELECT Customer, Min(StatusValue) AS MinOfStatusValue
FROM StatusHierarchy
LEFT JOIN Table1 ON StatusHierarchy.StatusDesc = Table1.Status
GROUP BY Table1.Customer) AS Query1
RIGHT JOIN StatusHierarchy ON Query1.MinOfStatusValue = StatusHierarchy.StatusValue
GROUP BY StatusHierarchy.StatusDesc
ORDER BY Count(Query1.Customer) DESC;
【讨论】:
与其将状态描述保存到通话记录中,还不如保存状态值,本质上就是状态ID。以上是关于根据呼叫日志状态层次结构计算类别中的唯一客户的主要内容,如果未能解决你的问题,请参考以下文章