我正在使用下面的查询来连续计算两个不同的值,并且它工作正常。
寻求帮助,以查找如何使查询显示百分比值的输出
查询是
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。
谢谢
答案 0 :(得分:0)
这是一种相当整齐的编写方式。我们可以将您当前的大多数逻辑放入子查询中,然后使用条件求和来生成所需的百分比和总计。
255.255.255.0
请注意,您当前的样本数据存在问题,但是您尝试执行的操作似乎已步入正轨。同样,我们本可以在没有子查询的情况下编写上面的代码,但是它很难阅读。如果您非常关注性能,我们还可以提供不带子查询的版本。