mysql - 用sql或者pandas讓一個(gè)表按照另一個(gè)表補(bǔ)全數(shù)據(jù)。
問題描述
如圖,圖1是各個(gè)地鐵站在各個(gè)時(shí)刻的進(jìn)站人數(shù),由于是模擬真實(shí)數(shù)據(jù),像七里莊在5點(diǎn)沒有人進(jìn)站,所以就沒有數(shù)據(jù)記錄,而圖2是完整的時(shí)段表,從5點(diǎn)到23點(diǎn),每15分鐘一段,現(xiàn)在想讓圖1 的每個(gè)地鐵站按照?qǐng)D2的時(shí)刻表進(jìn)行補(bǔ)全,如果這一時(shí)刻該地鐵站沒有記錄,就證明沒有人進(jìn)站,進(jìn)站人數(shù)就默認(rèn)為0。
如果能用sql最好,用pandas也可以。但我不知道怎么做到,向大家求助。
問題解答
回答1:按照你現(xiàn)在這樣的表結(jié)構(gòu)的化,圖2主表,左連接圖1表,條件起始時(shí)間=起始時(shí)間,結(jié)束時(shí)間=結(jié)束時(shí)間。查詢列圖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. java中返回一個(gè)對(duì)象,和輸出對(duì)像的值,意義在哪兒2. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?3. mysql - 在不允許改動(dòng)數(shù)據(jù)表的情況下,如何優(yōu)化以varchar格式存儲(chǔ)的時(shí)間的比較?4. docker start -a dockername 老是卡住,什么情況?5. css3 - 純css實(shí)現(xiàn)點(diǎn)擊特效6. apache web server 怎么限制某一個(gè)網(wǎng)站對(duì)服務(wù)器資源的占用?7. javascript - 關(guān)于apply()與call()的問題8. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?9. 安全性測(cè)試 - nodejs中如何防m(xù)ySQL注入10. python - pandas dataframe如何對(duì)某列的空數(shù)據(jù)位置進(jìn)行update?update的函數(shù)是自定義的,參數(shù)是同一行的另外兩列數(shù)據(jù)
