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

これは、動作するクエリを示すSQLFiddleデモです。

于 2013-03-25T16:58:33.833 に答える