计算并除以select语句

时间:2016-02-11 23:29:30

标签: sql sql-server sql-server-2008

我需要每月显示联系人数量。

我有以下查询,它给我不正确的结果。

SELECT 
    a.DATE_YYYYMM,
    CONVERT(DECIMAL, COUNT(a.id)) / COUNT(DISTINCT a.id) Average_contacts_per_member_per_month,
    COUNT(a.id) Count_Total_Contacts_Per_Month,
    a.id
--INTO #temp_Contacts
FROM 
    (SELECT DISTINCT 
         *, 
         ISNULL(CONVERT(NVARCHAR(6), l.SERVICE_DATE, 112),'') AS SERVICE_DATE_YYYYMM 
     FROM  l) a
WHERE 
    1=1 
    AND a.IS_V = 1  
GROUP BY 
    id, a.DATE_YYYYMM

我的平均值和计数结果相同,我知道它们应该有所不同。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您按a.id进行分组,因此计数总是为1。

你想要更像的东西:

SELECT a.DATE_YYYYMM,
       CONVERT(DECIMAL, COUNT(a.id))/COUNT(DISTINCT a.id) as Average_contacts_per_member_per_month,
       COUNT(a.id) as Count_Total_Contacts_Per_Month
FROM (SELECT DISTINCT *, 
             COALESCE(CONVERT(NVARCHAR(6), l.SERVICE_DATE, 112), '') AS SERVICE_DATE_YYYYMM
      FROM [MCS].[JXM1563].[LTIH_SSIS] l  
     ) a
WHERE a.IS_V = 1 
GROUP BY a.DATE_YYYYMM