我有5张桌子:
我希望在座席每天呼叫客户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
如果代理程序调用特定数字的次数超过两次,则此查询将返回。但它没有考虑2个数字是否属于同一个客户端。问题在于它没有捕获以下情况:代理一次调用其中一个号码,另一个号码调用两次,实际上总共调用客户端3次。
问题:如何更改它以检查客户端在clients_data表中是否有多个电话号码,然后查看代理是否呼叫任何这些号码(即呼叫客户端)更多比两次?
答案 0 :(得分:1)
我不熟悉“电话腿”的概念,但你不能通过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;