我已经编写了这个查询来获取我的数据,并且所有数据都很好。
我有一列有Pass或Fail。我想计算失败的预订数量百分比,并将其输出为单个值。
我将不得不写另一个查询以显示一个数字。
例如:以下数据,我有4次预订,其中2次失败。所以50%是失败率。我在显示中省略了一些列,但可以在查询中看到。
答案 0 :(得分:0)
将原始条件修改为以下内容。请注意,不需要将查询包装在子查询中。
CONCAT(FORMAT((100 * SUM(CASE WHEN trip_rating.rating <= 3 AND
(TIMESTAMPDIFF(MINUTE,booking.pick_up_time,booking_activity.activity_time) -
ROUND(booking_tracking_detail.google_adjusted_duration_driver_coming/60)) /
TIMESTAMPDIFF(MINUTE,booking.pick_up_time,booking_activity.activity_time)*100 >= 15
THEN 1
ELSE 0
END) / COUNT(*)), 2), '%') AS failureRate
这也会以50.0%
格式设置失败率格式,并带有百分号。
答案 1 :(得分:0)
这是对所有记录和简单数学的聚合:
select count(case when decision = 'Fail' then 1 end) / count(*) * 100
from (<your query here>) results;
说明:COUNT(something)
计算非空值。对于失败,case when decision = 'Fail' then 1 end
为1(即非空),否则为null(因为null是CASE / WHEN中不匹配的默认值 - 您也可以明确地写else null end
。)