问候大家
我有两张大桌子,我是从网络模拟得到的。 第一个表如下所示:
name time previousTime nextTime
A 4.22 0.00 4.23
B 4.32 4.22 9.22
A 9.22 4.32 9.23
C 9.32 9.22 10.1
A 10.1 9.23 10.1
第二张桌子看起来像:
name time value
A 4.11 2
B 4.32 1
A 4.22 0
C 9.32 4
A 4.5 1
A 9.5 8
A 9.6 4
我想做的是,从第一个表中取一行,在第二个表中检查第二个表中时间在previousTime nextTime或等于previousTime或nextTime或两者之间的所有行。然后在第一个表中将该值作为新列求和。你知道吗
我预期的结果如下:
name time previousTime nextTime Value
A 4.22 0.00 4.23 2
B 4.32 4.22 9.22 1
A 9.22 4.23 9.23 1
C 9.32 9.22 10.1 4
A 10.1 9.23 10.1 12
我写了这个python代码,但是给了我不同的值
import sqlite3
import pandas as pd
import numpy as np
import math
import csv
con = sqlite3.connect("G1.db")
cur = con.cursor()
result =[]
value =[]
q1= cur.execute("SELECT Name,Time,PreviousValue,NextValue from table1 GROUP by SourceName,Time")
rq1 = q1.fetchall()
q2=cur.execute("SELECT Time from table2")
rq2 = q2.fetchall()
print(rq2)
for row in rq1:
result.append(row)
print(result[0])
len(rq1)
#start my code
for i in range(len(rq1)):
for j in range(len(rq2)):
name = result[i][j]
T = result[i][j+1]
P = result[i][j+2]
N = result[i][j+3]
print('Name =',name)
print('P =',P)
print('T =',T)
print('N =',N)
q3= cur.execute("SELECT time,value,sum(value) AS Tsum\
from table2\
where (Name LIKE '%' || ? || '%' AND (time > ? AND time <= ?)) OR (Name LIKE '%' || ? || '%' AND time == ? ) ",(name,P,N,name,P))
rq3 = q3.fetchall()
print (rq3)
q3len = len(rq3)
v1 = rq3[j][j+1]
print('q3 ',rq3[j][j+1])
value.append(v1)
print (value)
len(value)
任何帮助都将不胜感激
这是你的完整代码
你知道吗=================================================================== 你可能需要做一些调整,但这将工作
相关问题 更多 >
编程相关推荐