sqlite3 - MAX() 函数不返回列的最大值

Jac*_*ria 2 sql sqlite max

对以下格式的表进行操作:

name                      size        solution_length  solution_forks  backtravel_parallel  backtravel_perp  forks_to_dead  dead_overlap  weighted_dead_length
------------------------  ----------  ---------------  --------------  -------------------  ---------------  -------------  ------------  --------------------
AldousBroder_5_33342.txt  5           14               4               0                    0                4              26            444
AldousBroder_5_05916.txt  5           28               4               4                    0                4              28            728
Run Code Online (Sandbox Code Playgroud)

这就是我如何获得一列的最大值。

sqlite> SELECT MAX(weighted_dead_length) FROM mazes_100k;

MAX(weighted_dead_length)
-------------------------
996
Run Code Online (Sandbox Code Playgroud)

但是,它似乎不是真正的最大值:

sqlite> SELECT COUNT(*) FROM mazes_100k WHERE weighted_dead_length = 1000;

COUNT(*)
----------
15
Run Code Online (Sandbox Code Playgroud)

为什么如果我尝试计算列值高于MAX() 返回值的行数,我仍然会得到一些命中?好像 MAX() 没有返回列的真正最大值。

通过尝试错误,使用 COUNT(),似乎真正的最大值是 1004 - 我怎样才能让 MAX() 返回那个?

谢谢!

Gor*_*off 5

您将值存储为字符串而不是数字。将值转换为最大值的数字:

SELECT MAX(weighted_dead_length + 0)
FROM mazes_100k;
Run Code Online (Sandbox Code Playgroud)

或者:

SELECT MAX(CASt(weighted_dead_length as INTEGER) )
FROM mazes_100k;
Run Code Online (Sandbox Code Playgroud)