关于SQL Server2012编程入门经典中使用AVG函数的疑问

来源:互联网 发布:网络报警电话是多少 编辑:程序博客网 时间:2024/04/29 18:27

代码:

 

        SELECT SalesOrderID, ORDERQTY AS 数量
        FROM  Sales.SalesOrderDetail
        Where SalesOrderID IN(43660,43670,43672)

 

结果:

 

           SalesOrderID       数量
             43660                     1
             43660                     1
             43670                     1
             43670                     2
             43670                     2
             43670                     1
             43672                     6
             43672                     2
             43672                     1
 

代码:

 

             SELECT SalesOrderID, AVG(ORDERQTY) AS 数量
             FROM  Sales.SalesOrderDetail
             Where SalesOrderID IN(43660,43670,43672)
             group by SalesOrderID

 

结果:

 

             SalesOrderID        数量
                  43660                 1
                  43670                 1
                  43672                 3

        

 

 

根据上表的信息来看,我们可以发现对于43670订单计算貌似不对,订单数量为4,订单量为6。按照正常的计算方法,应该为1.5,为什么计算出来的结果为1呢,这个我们就要从ORDERQTY字段的数据类型来进行检查,发现该字段类型为Smallint,AVG函数计算之后,采取直接截断,那么这就能够解释为什么计算出来的结果为1了。

 

 

0 0
原创粉丝点击