日期:2014-05-17  浏览次数:20585 次

看看我的SQL 语句错在哪了 ?
语句可以执行,但在最后的那个DECIMAL(18,2) 没有起作用,就是保留了两位是0的小数,没有计算对。比如109/2=54.00

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_域名

------最佳解决方案--------------------
试试
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_域名

------其他解决方案--------------------
HTML?
------其他解决方案--------------------
引用:
HTML?


没有HTML ,忽略那些,我本来想标记他们为红色的
我现在也不知道没发编辑他们了。
语句是可以运行的。就是没有小数部分,现在计算的小数部分都是00
------其他解决方案--------------------
去掉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_域名

------其他解决方案--------------------
引用:
试试SQL code?1234567891011121314WITH    temptb          AS ( SELECT   r_域名 ,                        CONVERT (VARCHAR(20), r_date, 23) AS 日期 ,  &nb