Python int列的最大最小结果
我正在使用Python2.7.6和sqlite 3.3.6。 我有一个带有INT列的表。当我在列上选择Python int列的最大最小结果,python,sqlite,Python,Sqlite,我正在使用Python2.7.6和sqlite 3.3.6。 我有一个带有INT列的表。当我在列上选择max()或min()时,会从行中返回一些既不是最小值也不是最大值的随机数。我试图重现这种行为,手动创建表并插入相同的值,最小值和最大值都能很好地工作。然而,在我的脚本之后,手动查询表再次给出奇怪的结果 下面是CREATETABLE语句 CREATE TABLE customer_score ( DATE INT , SPAUBM INT , "CUSTOMER" TEXT, "SCORE" I
max()
或min()
时,会从行中返回一些既不是最小值也不是最大值的随机数。我试图重现这种行为,手动创建表并插入相同的值,最小值和最大值都能很好地工作。然而,在我的脚本之后,手动查询表再次给出奇怪的结果
下面是CREATETABLE语句
CREATE TABLE customer_score ( DATE INT , SPAUBM INT , "CUSTOMER" TEXT, "SCORE" INT )
我使用sqlite中的executemany方法来填充表
cursor.executemany("INSERT INTO customer_score VALUES ( ?, ?, ? , ? )", list_to_put)
下面是从文件放入表中的行的示例
4203 6JASTYMPT 987335
问题的例子:
sqlite> select * from customer_score where customer='AAA' and date in (20140219);
20140219|9214|AAA|5017262
20140219|9213|AAA|3409363
20140219|9207|AAA|2288238
20140219|9208|AAA|809365
sqlite> select max(score) from customer_score where customer='AAA' and date in (20140219);
809365
sqlite> select min(score) from customer_score where customer='AAAL' and date in (20140219);
2288238
可能是executemany方法在插入表之前以某种方式将INT数据搞砸了吗
我不知道该怎么检查这个
更新
SQlite手册规定,MIN()
MAX()
按限制1进行订购。在我的情况下,ORDER BY也不能像预期的那样工作。行的位置看起来完全是随机的
sqlite> select * from customer_score where customer='AAA' and date in (20140218, 20140219) order by score desc ;
20140219|9208|AAA|809365
20140218|9208|AAA|629937
20140219|9214|AAA|5017262
20140218|9214|AAA|3911855
20140219|9213|AAA|3409363
20140219|9207|AAA|2288238
20140218|9213|AAA|2127092
20140218|9207|AAA|1489895
score
列中的值不是数字而是字符串
您必须确保list\u to\u put
中的值实际上是数字
(请注意SQLite非常重要;无论您是将其声明为
INT
还是TEXT
还是fluffly BUNNIES
)谢谢!我没检查这个。我确信,若我以字符串形式将带有数字的sqlite提供给INT格式的列,它将自动转换为INT或抛出异常。关于日期,只要格式为YYYYMMDD,我就可以将日期作为数字进行比较,这就是为什么我将它们保留为INT。