0

我有一个根据我选择的电台推测数据的查询。在我的 sql 表中,我有一列是通过将第 1 列除以第 2 列 *1000 创建的,但如果我要在 excel 中做同样的事情,我会得到另一个答案:S。

SELECT [Client],[Station],[Saleshouse],[Terr vs# Sat],[Month],[Year 2],
sum([Hour]) as 'Hour',
sum ([Impacts]) as 'Impacts',
sum (nullif([Insertions],0)) as Insertions,
sum (nullif([Final Cost],0)) as FinalCost,
sum (nullif([Resp 1],0)) as 'Resp 1',
sum (nullif([Resp 2],0)) as 'Resp 2',
sum (nullif([Final Cost],0)/nullif([Resp 1],0)) as 'CPR 1',
sum (nullif([Resp 1],0)/nullif(([Impacts]*1000),0)) as 'Resp%',
sum (nullif([Final Cost],0)/nullif([Resp 2],0)) as 'CPR 2',
sum (nullif([Resp 2],0)/nullif([Impacts]*1000,0)) as 'Resp%2',
sum (nullif([Resp 1],0)/ nullif([Resp 2],0)) as 'New vistor/all visitor' 
FROM [Exporter].[dbo].[tbl_Television_Data]
WHERE [Station] ='4MUSIC'
GROUP BY [Client],[Station],[Saleshouse],[Terr vs# Sat],[Month],[Year 2] ORDER BY [Station]

我所说的库尔姆是 RESP% 我得到的答案是 0.0365374676389937 但在 excel 中我使用相同的 fromula 方法,我得到这个 0.00283685。

如您所见,它们不同但使用相同的值:S。

任何人都可以就发生的事情给出答案??

4

1 回答 1

0

首先,问题是用 MySQL 标记的,但是使用的语法看起来很像 SQL-Server,因此我将使用 SQL-Server 语法进行所有演示。

其次,根据误差的大小(大约 10),我认为您的计算混淆了,您似乎在下面的 3 列中说

sum ([Impacts]) as 'column1',
sum (nullif([Resp 2],0)) as 'column2',
sum (nullif([Resp 2],0)/nullif([Impacts]*1000,0)) as 'column3'

第三列没有给你同样的结果,就像你(column2 / (column1 * 1000)在 excel 中做的一样,但这不是同一个公式。我认为你需要的是:

NULLIF(SUM([Resp 2]), 0) / (NULLIF(SUM(Impacts) * 1000, 0) AS [Resp 2%]

想象一下这个简单的例子(我删除了NULLIF运算符以使方程之间的区别更清楚):

DECLARE @T TABLE ([Resp 2] FLOAT, [Impacts] FLOAT);
INSERT @T VALUES (132.44, 40), (103, 43);

SELECT  Resp2 = SUM([Resp 2]),
        Impacts = SUM(Impacts),
        YourCalc = SUM([Resp 2] / ([Impacts] * 1000)),
        MyCalc = SUM([Resp 2]) / (SUM(Impacts) * 1000)
FROM    @T;

这会给你:

+--------+---------+--------------------+--------------------+
| Resp2  | Impacts |     YourCalc       |       MyCalc       |
|--------+---------+--------------------+--------------------|
| 235.44 |   83    | 0.0057063488372093 | 0.0028366265060241 |
+--------+---------+--------------------+--------------------+

正如您所看到MyCalc的,几乎与您所期望的匹配(差异可能是由于四舍五入造成的),但您的 calc 不匹配(我不喜欢使用反复试验来让您的 calc 匹配 0.0365374676389937,但希望您明白这一点)。

于 2013-07-02T14:46:11.223 回答