我有一个表,两列有些行:
c1 | c2
--------
10 | 90
11 | 89.5
12 | 89
13 | 87
14 | null
15 | 86
我想得到列c2的MAX值,但只能得到c1&#39的值12和15 我试着用:
SELECT MAX(IFNULL(c2, 0)) AS max_value FROM mytable WHERE data BETWEEN 12 AND 15
但没有工作。有没有办法忽略空值?
答案 0 :(得分:1)
“max()聚合函数返回组中所有值的最大值。最大值是在同一列的ORDER BY中最后返回的值。聚合max()仅返回NULL如果组中没有非NULL值。“ - http://sqlite.org/lang_aggfunc.html
假设您没有否定,并且您不希望NULL为0,您只需使用
即可SELECT MAX(c2) AS max_value FROM mytable ...
如果c2的所有行都为null,则max(c2)将返回null
答案 1 :(得分:1)
MAX聚合函数将自动跳过空值,因此以下查询应该没问题:
SELECT MAX(c2) FROM tablename WHERE c1 BETWEEN 12 AND 15;
请参阅小提琴here。我看到你的状况在哪里
WHERE data BETWEEN 12 AND 15
您确定要将WHERE子句应用于正确的列吗?我认为您需要将其更改为:
WHERE c1 BETWEEN 12 AND 15