sql - 删除日期两天内发生的行
问题描述
又是我。解释这个有点棘手,但我会尽力而为。我有一个数据集,其中包含客户 ID、呼叫这些客户的天数和一个虚拟列,其中 1 是我们与人交谈的时间,而 0 是我们不与人交谈的时间。
data Have;
input ID callDate :ddmmyy. Contacted ;
format callDate ddmmyy10.;
datalines4;
001 30/11/2020 0
001 01/12/2020 1
001 30/12/2020 1
001 31/12/2020 1
001 01/01/2021 1
002 01/02/2021 1
002 02/02/2021 1
002 15/02/2021 1
;;;
run;
data Want;
input ID callDate :ddmmyy. Contacted ;
format callDate ddmmyy10.;
datalines4;
001 01/12/2020 1
001 01/01/2021 1
002 02/02/2021 1
002 15/02/2021 1
;;;
run;
我基本上只想保留成功联系的记录,并且在第二天或后天没有成功联系。
例如,对于像这样的连续天:
day 1 - 0
day 2 - 1
day 3 - 0
day 4 - 1
day 5 - 0
day 6 - 1
我最终只会保留第 6 天。
我什至不知道从哪里开始真正......在python中我会创建穿过行的嵌套循环,但proc sql
我不知道如何处理这个问题。
如果有任何想法至少给我一个推动,我将不胜感激。
解决方案
您可以使用针对自身的相关子查询从表中进行选择。
SQL 将执行您在 python 中编写的所有循环。
例子:
proc sql;
create table want as
select * from have as each
where
not exists (
select * from have as self
where self.calldate between each.calldate + 1 and each.calldate + 2 /* follow up */
and self.contacted = 1 /* with an assertion of contact */
)
;
推荐阅读
- php - 如何修复删除按钮在 Laravel 5.7 中不起作用?
- angular - 角火2。无法读取未定义的属性“订阅”
- php - PHP - 如何不在登录页面上启动会话
- mysql - MySQL Load Data Infile (CSV):替换/删除垂直标签
- excel - 输入 Power BI 之前的数据格式
- c++ - 第一个参数设置为第二个作为默认参数的模板化 C++ 函数
- c# - xUnit 抽象测试类,带有带参数的虚拟测试方法
- c++ - 为什么可变参数宏如此令人不快?
- reactjs - 如何对包含在 memo 和 withStyles 中的 React 组件进行浅层测试?
- javascript - 在逻辑之前使用异步调用渲染组件反应 HOC