繁体   English   中英

同一查询中的计数和平均值

[英]Counts and Averages in same query

SQL Server 2008

我有以下查询,并且我希望将平均值添加到查询中。

SELECT 
    CNTS.ID, CNTS.LOCATION, CNTS.CLASS, CNTS.DATE_YYYYMM, 
    CNTS.PHONE_Contacts, CNTS.VISITS, CNTS.Total_Contacts 
FROM
    (SELECT 
         A.ID, A.LOCATION, A.CLASS, A.DATE_YYYYMM,
         SUM(CASE WHEN a.IST =1 AND a.RCH = 'Contact' THEN 1 ELSE NULL END) AS VISITS,
         SUM(CASE WHEN a.IST = 0 AND a.RCH = 'Contact' THEN 1 ELSE NULL END) AS Phone_Contacts,
         SUM(CASE WHEN a.RCH = 'Contact' THEN 1 ELSE NULL END) AS Total_Contacts
     FROM 
         (SELECT DISTINCT 
              *,
              CONVERT(NVARCHAR(6), [DATE], 112) AS DATE_YYYYMM,
          FROM z) A
     GROUP BY 
         A.ID, A.LOCATION, A.CLASS, A.DATE_YYYYMM) CNTS

期望的输出

id      class    date_yyyy    phone_contacts    vist_contacts    total_contacts    avg_phone_contacts_perid    avg_visit_contacts_perid    avg_total_contacts per id

1        start    201501           2             1                 3

如果要获取单行总计-也让您的外部查询汇总数据。 带有适当的GROUP BY子句。

您已经按照ID,位置,类别和日期对数据进行了分组-现在按更高的粒度级别进行分组。 当您为每个ID请求单独的行时,无法获得avg_phone_contacts_perid 除非您希望在每行中看到相同的avg_phone_contacts_perid值(例如进行比较),否则可以通过Windows函数AVG(...) OVER (...)

如果使用avg()和sum()函数似乎很简单,或者应该将其嵌套到另一个子查询中,如此处所述。

同一查询中count()的平均值

但是,您也可以尝试sql变量或人工联接列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM