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