0
我正在尝试计算达到给定数量所需的平均数量。将其视为销售环境:数据库中的每条记录都表示已拨打电话。其中一列中有一个标记表示是否进行了销售。我创建了一些能够返回达到给定数字所需条目的数量,但是,我希望它在达到该数字后“重置”,然后再次开始计数,直到所有数据都已经检查。达到给定数量所需记录的平均数量
表看起来像下面:
UID | DATE | TIME | NAME1 | SUBNAME1 | SUCCESS? |
1 | 01/01/2014 | 09:00:00 | Test1 | SubTest1 | 0 |
2 | 01/01/2014 | 09:01:00 | Test1 | SubTest1 | 1 |
3 | 01/01/2014 | 09:02:00 | Test1 | SubTest1 | 0 |
4 | 01/01/2014 | 09:03:00 | Test1 | SubTest1 | 1 |
5 | 01/01/2014 | 09:04:00 | Test1 | SubTest1 | 1 |
6 | 01/01/2014 | 09:05:00 | Test1 | SubTest1 | 1 |
7 | 01/01/2014 | 09:06:00 | Test1 | SubTest1 | 0 |
8 | 01/01/2014 | 09:07:00 | Test1 | SubTest1 | 1 |
9 | 01/01/2014 | 09:08:00 | Test1 | SubTest1 | 0 |
10 | 01/01/2014 | 09:09:00 | Test1 | SubTest1 | 0 |
11 | 01/01/2014 | 09:11:00 | Test1 | SubTest1 | 0 |
12 | 01/01/2014 | 09:12:00 | Test1 | SubTest1 | 0 |
13 | 01/01/2014 | 09:13:00 | Test1 | SubTest1 | 0 |
14 | 01/01/2014 | 09:14:00 | Test1 | SubTest1 | 1 |
如果我想知道有多少电话都需要达到三个销售,我的查询将返回最初5.我希望做的是检查整个表并返回平均值 - 在这种情况下为7。
下面看到查询迄今:
WITH CTE AS
(
SELECT UID, NAME1, SUBNAME1,
COUNT(CASE WHEN SUCCESS = 1 THEN 1 ELSE NULL END)
OVER (ORDER BY UID ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS RunningTotal
FROM dev.dbo.t1
WHERE Name1 = 'Test1'
AND Subname1 = 'SubTest1'
)
SELECT count(*)+1 AS [Count]
FROM CTE
WHERE RunningTotal < 3
任何帮助表示赞赏。我使用的Microsoft SQL Server 2008 R2(SP1) - 10.50.2500.0(X64)
感谢
sqlfiddle将帮助 – Mihai 2014-09-22 15:24:37