语句可以执行,但在最后的那个DECIMAL(18,2) 没有起作用,就是保留了两位是0的小数,没有计算对。比如109/2=54.00with temptb
as(select r_域名,CONVERT (VARCHAR(20),r_date ,23 )as 日期,count(1) as PV 
 from test 
 where  r_域名 is not null  group by  r_域名,CONVERT (VARCHAR(20),r_date ,23 ))select t1.r_域名,sum(pv) ,
CAST(avg(pv) AS DECIMAL(18,2)) AS '日均PV'
from temptb t1 group by r_域名

解决方案 »

  1.   


    没有HTML ,忽略那些,我本来想标记他们为红色的
    我现在也不知道没发编辑他们了。
    语句是可以运行的。就是没有小数部分,现在计算的小数部分都是00
      

  2.   

    去掉HTML 的代码with temptb
    as(
     
    select r_域名,CONVERT (VARCHAR(20),r_date ,23 )as 日期,count(1) as PV 
     from test 
     where  r_域名 is not null  group by  r_域名,CONVERT (VARCHAR(20),r_date ,23 )
     
    )
     
    select t1.r_域名,sum(pv) ,
    CAST(avg(pv) AS DECIMAL(18,2)) AS '日均PV'
    from temptb t1 group by r_域名
      

  3.   

    试试WITH    temptb
              AS ( SELECT   r_域名 ,
                            CONVERT (VARCHAR(20), r_date, 23) AS 日期 ,
                            COUNT(1) AS PV
                   FROM     test
                   WHERE    r_域名 IS NOT NULL
                   GROUP BY r_域名 ,
                            CONVERT (VARCHAR(20), r_date, 23)
                 )
        SELECT  t1.r_域名 ,
                SUM(pv) ,
                CAST(AVG(pv * 1.0) AS DECIMAL(18, 2)) AS '日均PV'
        FROM    temptb t1
        GROUP BY r_域名
      

  4.   

    因为默认是int,而int是忽略掉小数位而取整的,所以如果0.xxx的int类型,最终结果就是0,加了点之后,就隐式转换成浮点型