Расчетный процент SQL - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь выполнить запрос 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.

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Вам просто нужно умножить на 1,0

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

В вашем примере выполните: /COUNT(*) * 100.0

0 голосов
/ 02 марта 2020

Чтобы вычислить коэффициент своевременных проектов, вы можете использовать avg():

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

Если вы хотите получить значение по шкале 0-100, просто умножьте коэффициент на 100.

...