我使用下面的查询来计算一行中的两个不同的值,它工作得非常好。
寻求您的帮助,以找到如何使查询以百分比值显示输出
查询是
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
以后我想把它作为progressbar引导到php。
谢谢,
1条答案
按热度按时间isr3a4wc1#
这是一个相当整洁的写作方法。我们可以将当前的大部分逻辑放入子查询中,然后使用条件和生成所需的百分比和总和。
请注意,您当前的示例数据有一个问题,但这似乎与您正在尝试做的事情是一致的。另外,我们可以在没有子查询的情况下编写上面的内容,但是阅读起来要困难得多。如果性能是您的一个大问题,我们也可以给出一个没有子查询的版本。