【问题标题】:Calculating percentage SQL计算百分比 SQL
【发布时间】:2020-03-02 12:53:28
【问题描述】:

我正在尝试运行一个 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。

【问题讨论】:

  • 我在FROM 中看到了多个表,但没有看到JOIN。有什么不对劲。示例数据和所需结果将有助于解释您想要计算的内容。
  • 这能回答你的问题吗? SQL Server, division returns zero

标签: sql sql-server tsql group-by count


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你只需要乘以 1.0

    if you are doing select a/b, do it like select a*1.0/b
    

    在你的例子中:/COUNT(*) * 100.0

    【讨论】:

      猜你喜欢
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 2021-12-17
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多