gpt4 book ai didi

MySQL 按客户而不是电话号码分组

转载 作者:行者123 更新时间:2023-11-29 10:22:18 26 4
gpt4 key购买 nike

我有 5 张 table :

  1. service_agents 表
  2. 客户表
  3. clients_data 表(跟踪所有客户数据。每条数据都作为表中的另一行输入。因此,例如,如果客户有 2 个电话号码,则将有 2 行 - 使用连接(外键) ) client_id)。
  4. phone_call 表(跟踪电话调用,包括电话号码)
  5. phone_call_leg 表(跟踪电话调用的所有分支,包括 agent_id)

我想显示客服人员一天内调用客户超过 2 次的任何时间。这是我到目前为止所做到的:

SELECT 
pcl.agent_id,
CONCAT( sa.first_name, ' ', sa.last_name ) AS 'Agent Name',
pc.remote_number,
COUNT( pcl.agent_id ) AS 'times_called'
FROM
phone_call_leg pcl
JOIN phone_call pc ON pcl.call_id = pc.id
JOIN service_agents sa ON sa.id = pcl.agent_id
GROUP BY
pcl.agent_id,
pc.remote_number
HAVING
times_called > 2

如果客服人员调用特定号码超过两次,则此查询将返回。但它不考虑两个号码是否属于同一客户。问题在于它没有捕获以下场景:代理调用其中一个号码一次,另一个号码两次,本质上总共调用客户 3 次。

问题:如何更改它以检查客户在clients_data表中是否有多个电话号码,然后查看代理是否调用了这些号码中的任何一个(即调用客户)超过两倍?

最佳答案

我不熟悉“电话腿”概念,但你不能通过 client_id 而不是号码进行 group_by 吗?

SELECT 
COUNT(* ) AS 'times_called' ,
pcl.agent_id,
CONCAT( sa.first_name, ' ', sa.last_name ) AS 'Agent Name',
pc.remote_number
FROM
phone_call_leg pcl
JOIN phone_call pc ON pcl.call_id = pc.id
JOIN service_agents sa ON sa.id = pcl.agent_id
JOIN clients_data clid on clid.tel= pc.remote_number
JOIN clients cli on cli.id = clid.client_id
GROUP BY
pcl.agent_id,
cli.id
HAVING
times_called > 2;

关于MySQL 按客户而不是电话号码分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com