【发布时间】:2013-06-26 16:38:03
【问题描述】:
嗯,这些值不是空值,它们是VARCHAR(30),而是十进制形式。但是,某些记录在某些字段中具有“NA”。当用于SUM 的字段中存在“NA”时,我希望mysql 在SUM 计算中跳过这些行。 Mysql 将所有不可计算的字段视为 0。包含“NA”的字段中的 0 具有误导性。我正在做一个GROUP BYTABLE.ID。
编辑:
选择
总和(
案例 当 X >1 然后 1
当 X
结束
案例
当 Y >1 然后 1
当 Y
其他 3
结束)
AS "Col X+Y";
来自表 A 按表 A_ID 分组;
有时 X 和/或 Y = 在某些字段上为“NA”。如果 TableA_ID 上的 X 和 Y 都为 17,或者当其中一个为“NA”时,我得到 6。
编辑(引用我对 VARCHAR 的评论):
“我尝试将我的值存储为 DEC(5,2),但 Excel 中的一些数据在字段中有 NA。我确实设置了 X DEC(5,2) NULL 并尝试了将 NA 插入其中,但一直出错(不能为空)。我也尝试将默认值设为“NA”,但仍然出现错误(不能为空)。我将添加一个示例查询作为编辑。”
【问题讨论】:
-
但是如果它们被视为0,它们无论如何都不会被计算...
-
为什么将数字存储在
varchar(30)中,为什么存储NA而不是NULL? -
正如@fthiella 所说的那样——这不会影响
SUM的结果,但对于AVG会影响。如果还不算太晚,我会将其设为NUMERIC列并使用NULL而不是NA;这就是它应该如何完成的。 -
一个不“求和行”,一个“求和列”。请显示您正在尝试的查询示例。
-
我尝试将我的值存储为
DEC(5,2),但 Excel 中的一些数据在字段中有 NA。我确实将 Col1 DEC(5,2) 设置为 NULL 并尝试将 NA 插入其中但不断收到错误(不能为空)。我也尝试将默认值设为“NA”,但仍然出现错误(不能为空)。我将添加一个示例查询作为编辑。