如何在SQL中显示组的百分比?

如何在SQL中显示组的百分比?,sql,sql-server,Sql,Sql Server,我试图显示在某个截止日期前完成任务的百分比,针对不同的组 我已经计算了整体的百分比,但当我试图将数据拆分为每组的计算时,我总是会出错 为了计算百分比,我一直在使用: 当我尝试将[groupName]列添加到选择列表和GROUPBY子句时,出现了错误;它提到需要一个EXISTS关键字,但我不知道该放在哪里 人们能提供的任何帮助都将是美妙的!谢谢。我就用这个: DECLARE @TM DATETIME; SET @TM = DATEADD(MONTH,DATEDIFF(MONTH,'19000101

我试图显示在某个截止日期前完成任务的百分比,针对不同的组

我已经计算了整体的百分比,但当我试图将数据拆分为每组的计算时,我总是会出错

为了计算百分比,我一直在使用:

当我尝试将[groupName]列添加到选择列表和GROUPBY子句时,出现了错误;它提到需要一个EXISTS关键字,但我不知道该放在哪里

人们能提供的任何帮助都将是美妙的!谢谢。

我就用这个:

DECLARE @TM DATETIME;
SET @TM = DATEADD(MONTH,DATEDIFF(MONTH,'19000101', GETDATE()), '19000101')

SELECT 
    COUNT (case 
               when b.[completedByDeadline] = 1 
                   then 1 
               else NULL 
           end) / COUNT (a.[completed])
FROM [table] a 
    LEFT JOIN [other table] b 
        ON a.TaskID = b.TaskID 
WHERE a.[completed] >= DATEADD(MONTH,0,@TM)
我喜欢使用AVG进行此类查询:

SELECT AVG(case when b.[completedByDeadline] = 1 then 1.0 else 0 
           end) 
FROM [table] a LEFT JOIN
     [other table] b 
      ON a.TaskID = b.TaskID 
WHERE a.[completed] >= DATEADD(MONTH, 0, @TM);
如果completedByDeadline仅采用值0和1,则可以进一步简化:

SELECT AVG(b.[completedByDeadline] * 1.0)
FROM [table] a LEFT JOIN
     [other table] b 
      ON a.TaskID = b.TaskID 
WHERE a.[completed] >= DATEADD(MONTH, 0, @TM);

请注意,如果b中没有相应的任务,这些将返回NULL。

谢谢@Gordon,我使用Radu的答案设法使其工作,但我也检查了您的方法,并将其保存以备将来使用!
SELECT AVG(b.[completedByDeadline] * 1.0)
FROM [table] a LEFT JOIN
     [other table] b 
      ON a.TaskID = b.TaskID 
WHERE a.[completed] >= DATEADD(MONTH, 0, @TM);