2013-03-25 33 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