Re: [程式] 一題資料庫程式 很簡單的

看板Statistics作者 (談無慾)時間9年前 (2015/06/19 12:21), 9年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《cawaiilulu (across)》之銘言: : 我有兩個table : A是 n*6 B是 m*6 : 那6個 column 分別是 ID v1-v5 : 要作下列工作 : A每次出一row 跟B m個row v1-v5 一一比較 : 然後要把A比B大的個數算出來 最後找出m次比較最大值 output到 一個新table C : 所以 C有 n*2 (id num_大) : id1 0 : id2 4 : 這樣 : 我寫了一個 就是每次 A出第一row 跟B每row比 等於一次create m*7 那麼大的table : 然後找出 最大值 接著刪掉 已經比完的id 再回到A出第一行row 這樣循環 : 跑n=10萬 row m=50萬 row 一小時都還跑不完 : 感覺應該有更快的寫法 : 請大家賜教 怎麼構思更快的寫法 我是用SAS(有的話就太完美) : 但其他語言也沒關係 主要是想構思 資料長相 AID AV1 AV2 AV3 AV4 AV5 A1 1 4 3 1 2 BID BV1 BV2 BV3 BV4 BV5 B1 2 1 4 4 1 B2 4 1 5 4 3 PROC SQL; CREATE TABLE WORK.STEP1 AS SELECT t1.AID, t2.BID, case when t2.BV1-t1.AV1 >=0 then 0 else 1 end as CV1, case when t2.BV2-t1.AV2 >=0 then 0 else 1 end as CV2, case when t2.BV3-t1.AV3 >= 0 then 0 else 1 end as CV3, case when t2.BV4-t1.AV4 >= 0 then 0 else 1 end as CV4, case when t2.BV5-t1.AV5 >= 0 then 0 else 1 end as CV5 FROM SASUSER.A t1 CROSS JOIN SASUSER.B t2; QUit; data step2(KEEP=AID BID num_大); set step1; num_大=CV1+CV2+CV3+CV4+CV5; run; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.238.136.193 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1434687710.A.583.html ※ 編輯: MOONY135 (36.238.136.193), 06/19/2015 12:29:46
文章代碼(AID): #1LWvZUM3 (Statistics)
文章代碼(AID): #1LWvZUM3 (Statistics)