使用mysql查询输出中的值计算百分比

时间:2018-11-25 13:41:43

标签: php mysql

我正在使用下面的查询来连续计算两个不同的值,并且它工作正常。

寻求帮助,以查找如何使查询显示百分比值的输出

查询是

SELECT `Machine`,
        SUM(CASE WHEN `state` = 'UnHealthy' THEN 1 ELSE 0 END) 'Red'
     , SUM(CASE WHEN `state` = 'Healthy' THEN 1 ELSE 0 END) 'Green'
     , SUM(CASE WHEN `state` = 'UnHealthy' or `state` = 'Healthy' THEN 1 ELSE 0 END) 'Total'
  FROM Report Where date(`TOI`) >= DATE(NOW()) - INTERVAL 7 DAY
  Group by `Machine`

输出为

Machine Red Green   Total   
Node1   3   14      17  
Node2   0   3       3   
Node3   4   6       10  

如何使以上结果以百分比表示,如下所示

Machine Red Green   Total   
Node1   20% 80%      17 
Node2   25% 75%      3  
Node3   50% 50%     10   

稍后我想作为进度条引导到PHP。

谢谢

1 个答案:

答案 0 :(得分:0)

这是一种相当整齐的编写方式。我们可以将您当前的大多数逻辑放入子查询中,然后使用条件求和来生成所需的百分比和总计。

255.255.255.0

请注意,您当前的样本数据存在问题,但是您尝试执行的操作似乎已步入正轨。同样,我们本可以在没有子查询的情况下编写上面的代码,但是它很难阅读。如果您非常关注性能,我们还可以提供不带子查询的版本。