0

我对 T-SQL 和 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

4

1 回答 1

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 演示。

于 2013-03-25T16:58:33.833 回答