【SQL】计算每个人的完成率

2 篇文章 0 订阅

前提

  • 达梦数据库:
select 1/3; # 0
  • 不要求四舍五入

任务的完成率前三名

# nick_name 人名
# finishNum 当前这个人的任务完成数 
# total 当前这个人的任务总数
# finishNumRate 当前这个人的完成率

SELECT nick_name
     , SUM(CASE WHEN task_status = 2 THEN 1 ELSE 0 END) as finishNum 
     , COUNT(*) as total
     ,  SUM(CASE WHEN task_status = 2 THEN 1 ELSE 0 END) * 100 / COUNT(*) AS finishNumRate 
from farm_task a left join sys_user b on execute_user_id = user_id
where a.delete_flag = 0 and a.execute_user_id is not null
group by execute_user_id
order by finishNum desc
limit 3

在这里插入图片描述

拓展:达梦如何去实现除法有余数

方法1、修改CALC_AS_DECIMAL=1

方法2、select 1/3.0 from dual;

拓展:MySQL 任务的完成率前三名

# 四舍五入
SELECT round(完成数量/总数, 2)

# 四舍五入,并保留两位小数
SELECT round(3.149, 2); # 3.15

# 直接保留两位小数
SELECT truncate(3.149,2); # 3.14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值