select
screenname,
count(*) as Total_SignIns
,count(distinct(startdate)) as Uniq_Days_Signin
, ROUND(CONVERT(DECIMAL(4,2), count(*))/CONVERT(DECIMAL(4,2), count(distinct(startdate))), 2) AS AverageDaySingIn
from (
select distinct(id), x.screenname, startdate, cast(startdate+' '+starttime as datetime) as startdatetime, x.boxadollar
from sitelive.dbo.exsignin x (nolock)
inner join (
select distinct(SenderScreennameSimple), ReceiverScreennameSimple, convert(char(8),dateentered,1) as Poke_date
,(select top 1 Dateentered from Temp.dbo.poketemp
where n.ReceiverScreennameSimple = ReceiverScreennameSimple and n.SenderScreennameSimple = SenderScreennameSimple and convert(char(8),n.dateentered,1) = convert(char(8),dateentered,1)
Order by DateEntered) as Poke
,(select top 1 Dateentered from Temp.dbo.poketemp
where n.ReceiverScreennameSimple = ReceiverScreennameSimple and n.SenderScreennameSimple = SenderScreennameSimple and convert(char(8),n.dateentered,1) = convert(char(8),dateentered,1)
Order by DateEntered desc) as Poke_Lst
,count(*) as Poke_Count
from Temp.dbo.poketemp n
Group by SenderScreennameSimple, ReceiverScreennameSimple, convert(char(8),dateentered,1)
having count(*) = 1
) t1 on t1.SenderScreennameSimple = x.screenname
where datediff(minute,Poke,cast(startdate+' '+starttime as datetime) ) Between 0 and 60 and LiveOrRecorded = 'L'
) t2
Group by
screenname
以上是我使用的示例查询,结果集包含:
AverageDaySignIn
1.0000000
1.0000000
1.0000000
1.0000000
1.0000000
2.4500000
2.0000000
1.6700000
1.0000000
1.3300000... and so on
我什至尝试过:
, ROUND(CONVERT(DECIMAL(3,2), count(*))/CONVERT(DECIMAL(3,2), count(distinct(startdate))), 2) AS AverageDaySingIn
我收到此错误:
Arithmetic overflow error converting int to data type numeric.
我究竟做错了什么?对不起noob'ness,任何帮助将不胜感激。先感谢您。