mysql - 用sql或者pandas讓一個(gè)表按照另一個(gè)表補(bǔ)全數(shù)據(jù)。
問(wèn)題描述
如圖,圖1是各個(gè)地鐵站在各個(gè)時(shí)刻的進(jìn)站人數(shù),由于是模擬真實(shí)數(shù)據(jù),像七里莊在5點(diǎn)沒(méi)有人進(jìn)站,所以就沒(méi)有數(shù)據(jù)記錄,而圖2是完整的時(shí)段表,從5點(diǎn)到23點(diǎn),每15分鐘一段,現(xiàn)在想讓圖1 的每個(gè)地鐵站按照?qǐng)D2的時(shí)刻表進(jìn)行補(bǔ)全,如果這一時(shí)刻該地鐵站沒(méi)有記錄,就證明沒(méi)有人進(jìn)站,進(jìn)站人數(shù)就默認(rèn)為0。
如果能用sql最好,用pandas也可以。但我不知道怎么做到,向大家求助。
問(wèn)題解答
回答1:按照你現(xiàn)在這樣的表結(jié)構(gòu)的化,圖2主表,左連接圖1表,條件起始時(shí)間=起始時(shí)間,結(jié)束時(shí)間=結(jié)束時(shí)間。查詢(xún)列圖2的起止時(shí)間,圖1的人數(shù)
假設(shè)有個(gè)站點(diǎn)表記錄所有站點(diǎn)基本信息。
Seletc Site,Start,End,Cnt from( select Site,Start,End,timeKey from SiteTbl,TimeZone) aleft join (.....) b on a.Site=b.Site a.timeKey = b.timeKey回答2:
select table2.起始時(shí)間, table2.結(jié)束時(shí)間, ifnull(table1.進(jìn)站人數(shù), 0) '進(jìn)站人數(shù)'from table2left join table1 on table1.起始時(shí)間=table2.起始時(shí)間 and table1.結(jié)束時(shí)間=table2.結(jié)束時(shí)間
PS:如果可以請(qǐng)把第二張加一個(gè)站名這個(gè)字段.
相關(guān)文章:
1. mysql - 數(shù)據(jù)庫(kù)為什么需要鎖機(jī)制?2. 在MySQL中新增字段時(shí),報(bào)錯(cuò)??3. java - 安卓電視盒子取得了root權(quán)限但是不能安裝第三方應(yīng)用,請(qǐng)問(wèn)該怎么辦?4. python - 模擬滑動(dòng)驗(yàn)證碼,有源碼,求解5. css3 - 請(qǐng)問(wèn)一下在移動(dòng)端CSS布局布局中通常需要用到哪些元素,屬性?6. npm鏡像站全新上線7. 老哥們求助啊8. javascript - vue-router怎么不能實(shí)現(xiàn)跳轉(zhuǎn)呢9. javascript - angularjs 中數(shù)組的修改問(wèn)題10. tp6表單令牌
