mysql - 根据之前计算的字段计算MySQL Select字段

标签 mysql sql subquery inner-join

所以我在 MySQL 中有一个电话客户数据库,该数据库有两个表,customer_mastercall_data。这两个表都有一个 customer_id 字段,该字段匹配具有特定属性的单个客户编号。 customer_master 表包含客户姓名,call_data 表包含大量与唯一客户 ID 关联的通话数据。我需要创建一个查询,从中获取尝试的本地调用次数,然后根据调用事件调用成功的本地调用次数(而非掉线)并计算平均值。 call_data 表有一个 call_event 字段,我基本上需要在其中寻找两个不同的东西 a) local_call_failurelocal_call_success .我可以创建一个查询,我可以在其中使用 inner join 来显示我的表,其中包含 userIDuser nametotal local attempts,但是我不知道如何使用计算出的尝试值来计算本地调用成功平均值。以下是我如何根据 call_event 挑选出本地调用来获得总尝试次数:

SELECT customer_id,
CONCAT(name_first, ' ', name_last) AS 'Customer Name',
COUNT(CM.call_event) AS 'Total Local Attemps'
FROM customer_master CM
INNER JOIN call_data CD ON CM.customer_id = CD.customer_id
AND ((call_event = 'local_call_failure')
     OR (call_event = 'local_call_success') )
GROUP BY customer_id;

现在我可以创建另一个查询来使用上面相同的想法来计算成功的本地调用总数,除了在 AND 语句中,只包括 call_event = 'local_call_success'。如果我能以某种方式弄清楚如何独立执行这些操作,然后通过除以 call_success/tota_call_attempts 来计算平均值,这就是我所需要的!在任何其他语言中,这将花费我一个循环和五分钟,但 SQL 似乎要困难得多。我需要在同一个查询中完成两个计算,并排打印出来,然后为平均值制作另一列。如何做到这一点?根据我收集到的信息,设置一个像 @var_name := COUNT(CM.call_event) 这样的变量,然后使用该变量在您的 SELECT 中再次执行计算> 语句在 SQL 中是禁忌。

谁能帮我解决这个问题?我会永远欠你的债!

最佳答案

在 MySQL 中,您可以:

select cm.customer_id,
       concat(cm.name_first, ' ', cm.name_last) AS `Customer Name`, 
       count(*) as total_attempts,
       sum( cd.call_event = 'local_call_failure' ) as num_failures,
       sum( cd.call_event = 'local_call_failure' ) / count(*) as failure_rate
from customer_master cm join
     call_data cd 
     on cm.customer_id = cd.customer_id and
        cd.call_event in ('local_call_failure', 'local_call_success')
group by customer_id, `Customer Name`;

关于mysql - 根据之前计算的字段计算MySQL Select字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51605862/

相关文章:

c# - 如何在网页上以表格形式显示 csv 文件中的数据

MySQL 创建具有唯一约束的表

mysql - 使用 MySQL 中的 ORDER 和 GROUP 获取每个 GROUP 的最大数字

php - MySQL php查询打印到屏幕而不是创建强制下载csv文件

c# - 哪个更好 - 在 ASPX 页面或代码隐藏中声明 SqlDataSource?

MySQL delete with subquery给出语法错误

sql - 如何将选择表达式的结果保存为变量?

sql - 计算具有多个条件的列的许多不同组合

php - 执行准备好的语句但插入值时引发 PDO 异常

mysqldump 创建的行多于主键的实际范围