※ 引述《chippclass (善假狼赚钱中)》之铭言:
: 我从来没接触过10万笔以上资料的案例
: 所以我本来是想
: 240万 join 1600万 的资料
: 你应该是会用MOONY135的分批跑排程之类的做法?
: 不过若是10万笔以下的资料要跑的话应该还是能一句sql跑完所以来解一下题目
对,我还是会用MOONY135的建议,分批跑排程处理
我只是出于个人的强迫症,想要知道能不能够一句处理
这样后面跑分批应该也会比较快一点 (?)
非常感谢你把整个逻辑脉络呈现出来
我确定我应该是有看懂,也让我学到不少知识
虽然最终我修改了code在SAS环境运作,还是没办法解决重复的问题
: 其中一个比较让我意外的是里面join出来的表格居然外面的可以select
:
: 前面我说过会有这个错误:ERROR : Duplicate column name 'sid'
:
: 在 mariaDB 中就直接错误,我觉得是合理的
:
: 不然 select sid 到底是要捞哪个 sid ?
:
: 而你的 SAS sql 没报错,继续跑出结果,我猜是不是不同数据库对语法的行为不同?
:
: 莫非是因为你是 select * 而不是 select sid,
: 所以 SAS sql 就把两个 sid 都捞出来不报错?
:
: 如果是这样的话,那之后还有 GROUP BY date,sid,doctor
:
: 这个 group by sid 的又是哪个 sid ?
fig.1
https://imgur.com/MKsarjC
这个是SAS的行为,其实也是有跳出警示,但只要没有严重到无法执行
它还是会把结果跑给你
它应该是以前面那个SID为主
这个是把b.SID改名为s的结果
fig.2
https://imgur.com/z9mmuVX
fig.1 893 行 NOTE 最下面那行可以看到 295 rows and 40 columns
fig.2 901 行 NOTE 最下面那行是 295 rows and 41 columns
结果没有改变,只多了1 column named s (就是找到的每一个b.SID)
(这是只测试1笔a.SID的结果)
这是测试SID的原始资料样子
fig.3
https://imgur.com/XIXCuEl
3/24 还有看医生,25号之后就完全没再回诊,所以没有DoctorID
这个是fig.2 code跑出的结果
https://imgur.com/vVp6aeN
3/24 找到281笔b.SID,就变成281行资料
https://imgur.com/D9OEJN1
最后14笔没有看医生,所以也找不到b.SID
还是很感谢你让我知道这样写法的逻辑脉络