【发布时间】:2018-08-19 17:11:44
【问题描述】:
【问题讨论】:
标签: mysql sql aggregation
【问题讨论】:
标签: mysql sql aggregation
这是一个非常简单的方法:
select employee_id,
avg( present_id = 1 ) as present_ratio,
avg( present_id = 2 ) as absent_ratio,
avg( present_id = 3 ) as late_ratio
from t
group by employee_id;
这会产生一个介于 0 和 1 之间的数值。如果你真的想要一个百分比,你可以乘以 100;我发现这个比例更容易理解。
这使用 MySQL 扩展,其中布尔表达式的结果被视为数字上下文中的数字,0 表示假,1 表示真。更详细的方法使用 ANSI 标准功能:
avg(case when present_id = 1 then 1.0 else 0 end) as present_ratio
【讨论】: