sas中怎样对比每一行某列的值,谢谢!

Abed666 2019-08-14 11:25:27
比如我有数据
id date
1001 2019 -10-11
2001 2016-01-02
3001 2015-03-04
1001 2013-02-02
1001 2018-03-05
6001 2017-05-06
3001 2018-03-06
2001 2019-05-06


想要比对相同ID下,每个date的差值,怎么写,新手求指教。
...全文
489 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Abed666 2019-08-19
  • 打赏
  • 举报
回复
引用 5 楼 minsic78的回复:
没明白“用指针或者其他遍历每一行”是怎么个意思?你想用游标遍历整张表?哪个效率太低了,就算是用游标,你要获取前一条记录也会很麻烦,可能会多N倍的IO出来,分析函数扫描全表一次就可以搞定这个事情(前提是你要对全表数据做这个操作,如果只是其中一部分数据,那就看情况了) time_interval就是个别名而已。
我想表达的其实是,一张表里面日期和一个字段是0或者1的,日期又是不连续的,我想知道连续出现15个1的日期差(天数),有啥好算法吗。
Abed666 2019-08-19
  • 打赏
  • 举报
回复
引用 5 楼 minsic78的回复:
没明白“用指针或者其他遍历每一行”是怎么个意思?你想用游标遍历整张表?哪个效率太低了,就算是用游标,你要获取前一条记录也会很麻烦,可能会多N倍的IO出来,分析函数扫描全表一次就可以搞定这个事情(前提是你要对全表数据做这个操作,如果只是其中一部分数据,那就看情况了) time_interval就是个别名而已。
上面说那个不对,跳过吧……
Abed666 2019-08-19
  • 打赏
  • 举报
回复
引用 5 楼 minsic78的回复:
没明白“用指针或者其他遍历每一行”是怎么个意思?你想用游标遍历整张表?哪个效率太低了,就算是用游标,你要获取前一条记录也会很麻烦,可能会多N倍的IO出来,分析函数扫描全表一次就可以搞定这个事情(前提是你要对全表数据做这个操作,如果只是其中一部分数据,那就看情况了) time_interval就是个别名而已。
明白,我又试了一下,sas里面不让用游标。还有老师,现在有张表里面有个字段是0或者1,我想知道后一个0减去(前一个0后面的1)的差,有什么好的算法或者函数吗
Abed666 2019-08-16
  • 打赏
  • 举报
回复
没有人吗 来人教教
minsic78 2019-08-16
  • 打赏
  • 举报
回复
没明白“用指针或者其他遍历每一行”是怎么个意思?你想用游标遍历整张表?哪个效率太低了,就算是用游标,你要获取前一条记录也会很麻烦,可能会多N倍的IO出来,分析函数扫描全表一次就可以搞定这个事情(前提是你要对全表数据做这个操作,如果只是其中一部分数据,那就看情况了) time_interval就是个别名而已。
Abed666 2019-08-16
  • 打赏
  • 举报
回复
引用 3 楼 minsic78的回复:
这种意思?
SELECT id,
       age (date, LAG (date, 1) OVER (PARTITION BY id ORDER BY date))
          time_interval
  FROM lagtable;
老师,您这个lag函数应该是能实现我的需求,我还在那想用data步循环实现,就是不知道怎么用指针或者其他遍历每一行,您这个time_interval是干什么的
minsic78 2019-08-16
  • 打赏
  • 举报
回复
这种意思?
SELECT id,
       age (date, LAG (date, 1) OVER (PARTITION BY id ORDER BY date))
          time_interval
  FROM lagtable;
Abed666 2019-08-15
  • 打赏
  • 举报
回复
顶顶顶,来大佬教练

952

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧