Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 每天统计重复来电的人数_Sql_Google Bigquery - Fatal编程技术网

Sql 每天统计重复来电的人数

Sql 每天统计重复来电的人数,sql,google-bigquery,Sql,Google Bigquery,我有下表,我试图使用SQL来显示当一个Extranal_numbers第一次呼叫被放弃,然后当天的下一个呼叫被用户应答时的返回呼叫数 外接电话号码 电话号码 开始日期 连接日期 类别 目标类型 12324 4699315612876800 2021-03-14T12:51:24.453000 2021-03-14T12:52:13.613000 新当选的 呼叫中心 12324 6246986274242560 2021-03-14T12:52:06.280000 2021-03-14T12:52

我有下表,我试图使用SQL来显示当一个Extranal_numbers第一次呼叫被放弃,然后当天的下一个呼叫被用户应答时的返回呼叫数

外接电话号码 电话号码 开始日期 连接日期 类别 目标类型 12324 4699315612876800 2021-03-14T12:51:24.453000 2021-03-14T12:52:13.613000 新当选的 呼叫中心 12324 6246986274242560 2021-03-14T12:52:06.280000 2021-03-14T12:52:14.334000 新当选的 使用者 12324 5846017495465984 2021-03-16T12:32:17.853000 无效的 被遗弃的 办公室 12324 4598643760496640 2021-03-16T12:38:25.682000 无效的 被遗弃的 部门 12324 5957902265942016 2021-03-16T12:40:08.024000 2021-03-16T12:41:09.847000 新当选的 呼叫中心 12324 5244220798074880 2021-03-16T12:41:03.765000 2021-03-16T12:41:09.978000 新当选的 使用者 12324 5957902265942019 2021-03-16T15:40:08.024000 2021-03-16T12:41:09.847000 新当选的 呼叫中心 12324 5244220798074881 2021-03-16T15:41:03.765000 2021-03-16T12:41:09.978000 新当选的 使用者
如果我理解正确,您可以这样做:

SELECT c.external_number
     , c.call_id
     , c.date_started
     , c.date_connected
     , c.category
     , c.target_type
     , CASE WHEN c.category <> LCAT THEN 'Yes'
            WHEN  c.category <>c.Rcat THEN 'No'
       END AS repeat
FROM (
    SELECT *
        , LAG(category,1,'NA') OVER (PARTITION BY external_number ORDER BY date_started) Lcat
        , LEAD(category,1,'NA') OVER (PARTITION BY external_number ORDER BY date_started) Rcat
    FROM calls
    WHERE ( category = 'incoming' and target_type = 'user') OR category = 'abandoned'
) c
WHERE 
(c.category <> Lcat OR c.category <>c.Rcat)
AND c.category <> 'abandoned'
此查询的工作方式是,它查找进入类别中且具有target_type='user'的行,或者由于我们关心这些行而处于废弃类别中的行,然后我们查看每行中的上一个或下一个类别,它检测类别中是否有更改并报告它们

注:

repeat将在任何呼叫被放弃后报告yes,即使在没有成功呼叫之前也是如此。 此查询仅针对每个外部_编号,如果您需要结果,例如每天针对每个外部_编号;您需要相应地调整分区
我使用的是bigquery,它似乎不喜欢LAGcategory,1,category或LEADcategory,1,category,LAGcategory,1做同样的事情吗?真奇怪!显示它得到3个参数如果3个参数找不到以前的值,则为默认值,但是如果删除它,则会得到空值,通过对查询进行一些小的更改,您可以处理它,但答案中的查询应该可以工作,我可以去掉第3个参数,现在我只需要每天做一次,就像是按外部编号划分一样,datedate开始按日期排序,用3个参数开始,我不断得到这个错误运行查询参数3到分析函数“lag”必须是常量。找到德里夫。