我有一个SQL数据库,其中的行包含给定日期时间的欧元/美元价格:
我想把这些数据分成1分钟一组,并获取一些信息,我编写了一个python程序,调用sqlite3数据库。现在,我有一个计划:
def SQLQuerySpecial(currency,start,end):
sql = 'SELECT f.datetime, f.buy, c.minp, c.maxp, c.avgp FROM {c} f INNER JOIN (SELECT MIN(datetime) mindate, MAX(datetime) maxdate, MIN(sell) minp, MAX(sell) maxp, AVG(buy) avgp FROM {c} GROUP BY strftime("%Y-%m-%d %H:%M",datetime)) c ON f.datetime = c.mindate or f.datetime = c.maxdate'.format(c = currency)
当我这样做的时候:
^{pr2}$我得到的结果是:
('2002-01-02 01:26:33',0.8913,0.8913,0.8913,0.8913)
('2002-01-02 01:27:12',0.8946,0.8946,0.8947,0.89462)
('2002-01-02 01:27:49',0.8946,0.8946,0.8947,0.89462)
('2002-01-02 01:28:00',0.8947,0.8946,0.8947,0.89464545454546)
('2002-01-02 01:28:00',0.8946,0.8946,0.8947,0.894645454546)
('2002-01-02 01:28:43',0.8946,0.8946,0.8947,0.894645454546)
('2002-01-02 01:28:43',0.8946,0.8946,0.8947,0.894645454546)
('2002-01-02 01:29:49',0.8946,0.8946,0.8947,0.89465)
('2002-01-02 01:29:49',0.8947,0.8946,0.8947,0.89465)
('2002-01-02 01:29:52',0.8946,0.8946,0.8947,0.89465)
('2002-01-02 01:29:52',0.8947,0.8946,0.8947,0.89465)
('2002-01-02 01:30:41',0.8945,0.8945,0.8946,0.89452999999999)
。。。一个代表21行结果。在
对于01:27和01:34参数之间的函数,我只需要获得8行:
2002-01-02 01:27:xx,买入价@01:27,最高买入价在01:27至01:28之间,最低买入价在01:27至01:28之间,买入价@1:28
2002-01-02 01:28:xx,买入价@01:28,最高买入价在01:28至01:29之间,最低买入价在01:28至01:29之间,买入价@1:29
2002-01-02 01:29:xx。。。在
。。。在
致2002-01-02 01:34:xx。。。在
老实说,我试图找到正确的方法来完成它,但这对我来说很棘手,我不太擅长SQL。谢谢你的阅读和帮助。在
特别感谢unutbu
我建议您使用MySQLdb 然后使用
fetchmany(8)
获得前8列以下是MySQLdb的用户指南:http://mysql-python.sourceforge.net/MySQLdb.html
下面是下载链接:http://sourceforge.net/projects/mysql-python
先生,这就是我对你的理解
谢谢。。在
试试这个:
dm
代表“日期分钟”。我们按日期分钟分组。在datetime
。SELECT DISTINCT
消除重复行。在如果您希望SQL为您完成这项工作,您需要执行
GROUP BY
分钟;然后可以使用MIN(minp)和MAX(minp)来获取每分钟的最低价格范围。但是,看起来整个日期是一个SQL列,所以并不容易。在如果您不能修改SQL表模式(或者不想修改),那么编写一个python循环来处理从当前查询中获得的信息可能是最简单的。在
相关问题 更多 >
编程相关推荐