SQL 服务器:数据类型问题
SQL Server: Issues with data type
SELECT pa.[type], (SUM(pa.Actions_Logged)/SUM(pi.Impressions_Served)) AS ActionRates
from Performance_Actions pa
INNER JOIN Performance_Impressions pi
ON pa.Alternative = Pi.Alternative
GROUP BY pa.[type];
以上查询产生错误:
Lookup Error - SQL Server Database Error: Arithmetic overflow error converting expression to data type int.
pa.Actions_Logged
和 pi.Impressions_Served
都是整数,结果是小数。是这个问题吗?
表格是
圆周率:
Date Alternative Impressions_Served
05/04/2015 x 544432
05/04/2015 x 545990
18/04/2015 y 343325
06/04/2015 z 591316
06/04/2015 y 2
帕:
Date Alternative Actions_Logged Type
05/04/2015 x 33 landing
01/04/2015 y 3 conversion
06/04/2015 k 8 landing
01/04/2015 x 3 conversion
18/04/2015 y 3 landing
试试这个查询
SELECT pa.[type], (isnull( SUM(pa.Actions_Logged),0)/isnull(SUM(pi.Impressions_Served),0)) AS ActionRates
from Performance_Actions pa
INNER JOIN Performance_Impressions pi
ON pa.Alternative = Pi.Alternative
GROUP BY pa.[type];
SUM
中的表达式类型决定了 return 类型。
尝试以下操作:
SELECT pa.[type], (SUM(CAST(pa.Actions_Logged as BIGINT ))/SUM(CAST(pi.Impressions_Served as BIGINT ))) AS ActionRates
from Performance_Actions pa
INNER JOIN Performance_Impressions pi
ON pa.Alternative = Pi.Alternative
GROUP BY pa.[type];
SELECT pa.[type], (SUM(pa.Actions_Logged)/SUM(pi.Impressions_Served)) AS ActionRates
from Performance_Actions pa
INNER JOIN Performance_Impressions pi
ON pa.Alternative = Pi.Alternative
GROUP BY pa.[type];
以上查询产生错误:
Lookup Error - SQL Server Database Error: Arithmetic overflow error converting expression to data type int.
pa.Actions_Logged
和 pi.Impressions_Served
都是整数,结果是小数。是这个问题吗?
表格是 圆周率:
Date Alternative Impressions_Served
05/04/2015 x 544432
05/04/2015 x 545990
18/04/2015 y 343325
06/04/2015 z 591316
06/04/2015 y 2
帕:
Date Alternative Actions_Logged Type
05/04/2015 x 33 landing
01/04/2015 y 3 conversion
06/04/2015 k 8 landing
01/04/2015 x 3 conversion
18/04/2015 y 3 landing
试试这个查询
SELECT pa.[type], (isnull( SUM(pa.Actions_Logged),0)/isnull(SUM(pi.Impressions_Served),0)) AS ActionRates
from Performance_Actions pa
INNER JOIN Performance_Impressions pi
ON pa.Alternative = Pi.Alternative
GROUP BY pa.[type];
SUM
中的表达式类型决定了 return 类型。
尝试以下操作:
SELECT pa.[type], (SUM(CAST(pa.Actions_Logged as BIGINT ))/SUM(CAST(pi.Impressions_Served as BIGINT ))) AS ActionRates
from Performance_Actions pa
INNER JOIN Performance_Impressions pi
ON pa.Alternative = Pi.Alternative
GROUP BY pa.[type];