sql - 如何划分两个聚合以获得百分比
问题描述
我正在尝试计算处理量与目标量的百分比。我已经能够分别计算出工作量和目标量,但是当我尝试获得百分比时,我的结果一直四舍五入到最接近的整数,我已经将它们转换为十进制,因为我期望结果以小数形式而不是百分比形式出现。
(CAST(COUNT(job_id) AS DECIMAL)/
(CAST(ROUND(SUM(review_time)/1000,2)/MAX(CAST(target_review_time AS DECIMAL)) AS DECIMAL))) AS Percentage
任何帮助将不胜感激,谢谢
解决方案
您正面临整数除法。该操作的所有操作数都是整数,因此结果也以整数形式给出。
您可以通过将操作数之一转换为小数来强制使用小数上下文:
COUNT(job_id) / SUM(review_time) / MAX(target_review_time) / 1000.0 AS Percentage
然后你可以round()
得到你想要的精度:
ROUND(COUNT(job_id) / SUM(review_time) / MAX(target_review_time) / 1000.0, 2) AS Percentage
注意:如果job_id
不能为空,那么COUNT(job_id)
写的效率更高COUNT(*)
。
推荐阅读
- python - 如何在多类中获得 Python 中每个预测值的概率?
- android - 如何将一个/两个 TextView 设置为另一个 TextView 的高度?
- html - 我正在使用引导程序制作一个网站,我已经使卡片具有响应性,但我无法使卡片中的图像响应
- r - 我如何检查列表的所有元素是否都是 r 中的整数?
- android - 在Android运行时解密内存中的共享库
- c - 如何通过C指针修改函数?可以吗?
- ethereum - 尝试部署合约时收到“无效或不带任何参数”
- python - 你如何在 numpy 中创建未知的代数变量?
- java - 在没有页面重定向/刷新的情况下触发 Spring MVC 控制器方法
- react-native - React Native backgroundImage 不适用于平面列表的元素