首页 > 解决方案 > 计算百分比 SQL

问题描述

我正在尝试运行一个 SQL 查询,该查询每月计算工程完成项目所需的平均时间和按时项目的百分比。

SELECT
    AVG(DATEDIFF(DAY, [DateBlockReleased], [DateEngineeringTargetComplete])),
    SUM(IIF(DATEDIFF(DAY, [DateBlockReleased], [DateEngineeringTargetComplete]) >= 0, 1, 0)) AS [OnTime]
FROM
    [JobData].[JobData],
    [JobData].[BOMInfo],
    [JobData].[DesignInfo]
WHERE ...

这目前返回平均花费的时间和按时项目的数量,但是,我不确定如何将其除以项目总数。我尝试在总和之后添加 /COUNT(*) * 100 但这总是返回 0。

标签: sqlsql-servertsqlgroup-bycount

解决方案


要计算按时项目的比率,您可以使用avg()

AVG(CASE 
    WHEN DateEngineeringTargetComplete >= DateBlockReleased
    THEN 1.0 
    ELSE 0.0 
END) AS OnTimeRatio

如果您想要 0-100 范围内的值,只需将比率乘以 100。


推荐阅读