楼主: xts1xts
17914 12

[原创博文] 为什么“left join”后观测值数量会增加?? [推广有奖]

  • 0关注
  • 1粉丝

博士生

91%

还不是VIP/贵宾

-

威望
0
论坛币
1386 个
通用积分
1.8875
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3084 点
帖子
175
精华
0
在线时间
453 小时
注册时间
2008-5-2
最后登录
2022-12-3

楼主
xts1xts 发表于 2012-7-16 15:19:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如题,在SQL语句中,“left join”不是以前一个数据集为基准的吗?为什么合并后观测值数量会增加呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:left join left join EFT 观测值

沙发
xts1xts 发表于 2012-7-16 15:20:25
难道是产生了duplicates??

藤椅
yunqingwang 在职认证  发表于 2012-7-16 15:47:02
有多对多的情况

板凳
xts1xts 发表于 2012-7-16 15:50:02
yunqingwang 发表于 2012-7-16 15:47
有多对多的情况
不明白,能说的具体点吗?

报纸
yunqingwang 在职认证  发表于 2012-7-16 15:52:53
基表有两条重复的记录,另外那个也有两条对应重复的,
left join之后就有4条了
如果基表没有重复的记录,left join就和基表数是一样
这里说的重复是指基于join 变量的重复

地板
xts1xts 发表于 2012-7-16 16:13:48
yunqingwang 发表于 2012-7-16 15:52
基表有两条重复的记录,另外那个也有两条对应重复的,
left join之后就有4条了
如果基表没有重复的记录, ...
好像不对。在保证基表没有重复的记录之后我又做了“left join”,还是有观测值增加??

7
yunqingwang 在职认证  发表于 2012-7-16 16:15:07
能贴出代码吗

8
xts1xts 发表于 2012-7-16 16:42:23
yunqingwang 发表于 2012-7-16 16:15
能贴出代码吗
proc sort data=return.abreturn out=return.abreturn nodupkey;
by CUSIP6 PERSONID TRANDATE;
RUN;

PROC SQL;
create table return.abreturn1 as
select * from return.abreturn a left join return.return01 b
on a.trandate=b.trandate and a.personid=b.personid and a.cusip6=b.cusip6;
quit;

这样之后观测值还是变多了?

9
liuyingbei 在职认证  发表于 2012-7-16 16:57:17
xts1xts 发表于 2012-7-16 16:42
proc sort data=return.abreturn out=return.abreturn nodupkey;
by CUSIP6 PERSONID TRANDATE;
RUN;
你的nodupkey应该是记录没有重复,但是不能保证单个字段没有重复吧?
孜孜以求

10
yunqingwang 在职认证  发表于 2012-7-16 17:17:36
liuyingbei 发表于 2012-7-16 16:57
你的nodupkey应该是记录没有重复,但是不能保证单个字段没有重复吧?
程序没问题,按by CUSIP6 PERSONID TRANDATE;去重,也按bCUSIP6 PERSONID TRANDATE left join
会报warning吧,select * 会有warming吧

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 14:35