Re: [SQL ] 滚动计算并回传

楼主: Wengboyu ( )   2020-10-16 15:36:18
※ 引述《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
还是很感谢你让我知道这样写法的逻辑脉络
作者: chippclass (善假狼赚钱中)   2020-10-17 15:59:00
group by 是 a.date 不是 b.date
楼主: Wengboyu ( )   2020-10-17 16:37:00
我看不懂你的意思,你是说group by后的date要改吗?
作者: chippclass (善假狼赚钱中)   2020-10-18 19:45:00
a.date 全名是 PrescriptionBeginDateb.date 全名是 prescriptiondate你最后的 group by 要是 PrescriptionBeginDate而不是 prescriptiondate
楼主: Wengboyu ( )   2020-10-19 09:33:00
https://imgur.com/s8Q1sUj 结果还是一样的 不知道为何
作者: chippclass (善假狼赚钱中)   2020-10-20 00:07:00
不知道呢有关从mariaDB改写成SAS sql,我发现的也只有三个地方

Links booklink

Contact Us: admin [ a t ] ucptt.com