2013-03-25 81 views
0

我在T-SQL和SRSS中遇到了以下问题。SRSS中的百分比

情况:电子邮件票务系统。 每个传入的邮件都获得一个ID。另外,如果用户是我们数据库中的VIP,则每个电子邮件都会获得“VIP”标志。我现在要做的是获得以下4个值。

  • 邮件总量
  • VIP邮件总量
  • 百分比共计/ VIP

到目前为止,从来就得到了以下声明:

WITH T1 AS (
SELECT 
    increcsystem.registrationtime, 
    count(*) AS [Total], 
    increcsystem.viplevel, 
FROM 
    increcsystem 
WHERE 
GROUP BY increcsystem.registrationtime, increcsystem.viplevel 
) 
Select 
    (Select count(*) From T1) AS Total, 
    (Select count(*) From T1 WHERE viplevel = '100629') AS VIP_Tickets, 
    registrationtime AS Date 
FROM T1 

但我无法得到百分比正确:(
有人可以看到错误吗?

最好的问候, PhiBu

回答

1

这里有一个简单的查询,应该工作:

select registrationtime 
    , TotalMails = count(1) 
    , VIPMails = sum(case when viplevel = '100629' then 1 else 0 end) 
    , VIPPercent = sum(case when viplevel = '100629' then 1.0 else 0.0 end)/count(1) 
from increcsystem 
group by registrationtime 
order by registrationtime 

下面是该工作查询SQL Fiddle demo