You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中如何将同一列值按百分比输出(附员工考勤示例)

统计MySQL员工考勤状态的百分比结果

嘿,这事儿好办!我来给你写个实用的MySQL查询语句,轻松算出员工考勤各状态的占比百分比~

首先得先明确下你的考勤表结构,我假设表名叫attendance,包含两个核心字段:

  • employee_id:员工ID(用来定位你要统计的员工1)
  • status:考勤状态(1=出勤,2=缺勤,3=迟到)

针对员工1的5条记录,直接用下面的SQL就能算出各状态的百分比,还能自动保留两位小数,结果看着更清爽:

SELECT
    employee_id,
    ROUND(SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) / COUNT(*) * 100, 2) AS `出勤占比(%)`,
    ROUND(SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) / COUNT(*) * 100, 2) AS `缺勤占比(%)`,
    ROUND(SUM(CASE WHEN status = 3 THEN 1 ELSE 0 END) / COUNT(*) * 100, 2) AS `迟到占比(%)`
FROM attendance
WHERE employee_id = 1
GROUP BY employee_id;

代码解释:

  • SUM(CASE...):用条件判断统计每个状态的记录数,匹配到对应状态就加1,否则加0
  • COUNT(*):获取该员工的总考勤记录数(这里就是5条)
  • ROUND(..., 2):把计算出的百分比保留两位小数,避免出现一堆冗余小数位
  • AS:给每个统计字段起个直观的别名,方便快速看懂结果

举个实际例子,如果员工1的5条记录是[1,1,2,3,1],运行这个SQL后会得到:

employee_id出勤占比(%)缺勤占比(%)迟到占比(%)
160.0020.0020.00

要是你想一次性统计所有员工的考勤占比,直接去掉WHERE employee_id = 1这句就行,查询结果会按每个员工分组展示。

内容的提问来源于stack exchange,提问作者hmamun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:56:08