计算SQL

时间:2015-07-13 19:55:41

标签: sql percentage

我正在尝试在我的应用中完成项目的百分比。百分比将由插件显示,但插件需要SQL命令来运行查询并进行计算。

基本上,项目将为用户分配里程碑。每个里程碑都有一个字段标记为完整。

里程碑和与此里程碑相关的字段(里程碑ID,状态,截止日期等)都写入此表:eba_proj_status_ms。状态包括以下值:已分配,正在进行,已完成。

我希望插件显示的是,特定项目标记为“已完成”的里程碑数的百分比。因此,一旦所有里程碑都标记完成,插件应显示100%。因为它是针对特定项目的,所以我知道需要合并的where子句。我只需要根据有多少“已完成”条目来计算百分比。

我没有开发人员背景,因为我使用SQL平台来构建此应用程序。任何帮助都会很棒,谢谢!

3 个答案:

答案 0 :(得分:1)

这是一次尝试:

select 100.0*count(case when status = 'Completed' then 1 end) 
     / count(1) as pctComplete
from eba_proj_status_ms     

与@Sam cd相似但没有子选择

答案 1 :(得分:0)

您没有指定您正在使用的SQL风格。这适用于T-SQL。

一种快速而肮脏的方法是声明2个变量以获得已完成任务的数量,然后获得总任务。然后选择已完成/总计。这将给你一个十进制格式(0.50而不是50% - 你可以乘以100,如果你需要它返回50而不是0.50)

DECLARE @total  INT
DECLARE @completed INT

SELECT @total = count(*) FROM eba_proj_status_ms

SELECT @completed = count(*) FROM eba_proj_status_ms WHERE [status] = 'Completed'

SELECT @completed / CAST(@total AS float)

答案 2 :(得分:0)

基本上@Tingo说的是没有变数:

select 
((select COUNT(*) from eba_proj_status_ms WHERE [status] = 'Completed') /
COUNT(*) as PctComplete) * 100
from eba_proj_status_ms