SQL-字段值的条件?
我想知道我是否可以在查询中根据每个返回行中的条件测试一些值 e、 g: 我有以下专栏:SQL-字段值的条件?,sql,syntax,Sql,Syntax,我想知道我是否可以在查询中根据每个返回行中的条件测试一些值 e、 g: 我有以下专栏: X Y Z -1 1 2 2 2 -1 3 -1 3 我想对除-1之外的所有值使用avg()。我不能使用where-1,因为每行只包含一次。使用where过滤掉不希望包含在平均值中的值,例如,在平均值中包含除-1以外的所有数字: SELECT (SELECT AVG(x) FROM table1 WHERE x >= 0) AS x, (SELECT AVG
X Y Z
-1 1 2
2 2 -1
3 -1 3
我想对除-1之外的所有值使用avg()。我不能使用where-1,因为每行只包含一次。使用where过滤掉不希望包含在平均值中的值,例如,在平均值中包含除-1以外的所有数字:
SELECT
(SELECT AVG(x) FROM table1 WHERE x >= 0) AS x,
(SELECT AVG(y) FROM table1 WHERE y >= 0) AS y,
(SELECT AVG(z) FROM table1 WHERE z >= 0) AS z
请注意,如果您真的想像您在问题中所说的那样包含除-1之外的所有数字,那么您应该将WHERE子句更改为x-1
,但我怀疑这是否是您想要的。尝试以下操作:
SELECT AVG(IF(x <> -1, x, NULL)) AS avgX,
AVG(IF(y <> -1, y, NULL)) AS avgY,
AVG(IF(z <> -1, x, NULL)) AS avgZ
FROM mytable;
选择AVG(如果(x-1,x,NULL))作为avgX,
平均值(如果(y-1,y,NULL))作为平均值,
AVG(如果(z-1,x,NULL))作为avgZ
从mytable;
使用诸如-2之类的值会发生什么情况?使用x-1
等可能会更好,因为您当前的查询只允许大于零的值。