Mysql 仅当字段已填充时计数
我有一个关于我要编写的SQL查询的问题。假设我在表:school中有一个列,列的值如下:gradesMysql 仅当字段已填充时计数,mysql,sql,Mysql,Sql,我有一个关于我要编写的SQL查询的问题。假设我在表:school中有一个列,列的值如下:grades SUI grades | Score 2 9 2 2 9 5 4 1 5 4 1 5 4 6 1 1 6 1 现在我想要一个输出,其中它对SUI进行分组,仅当分数已填充时才计算分数。因此,我的输出将是: SUI Count 2 1
SUI grades | Score
2 9 2
2 9
5 4 1
5 4 1
5 4
6 1 1
6 1
现在我想要一个输出,其中它对SUI进行分组,仅当分数已填充时才计算分数。因此,我的输出将是:
SUI Count
2 1
5 2
6 1
count忽略空值,因此可以使用having条件:
SELECT sui, COUNT(score)
FROM mytable
GROUP BY sui
HAVING COUNT(score) > 0
我会在聚合之前进行筛选:
SELECT sui, COUNT(*)
FROM t
WHERE score IS NOT NULL
GROUP BY sui;
如果值为空且不为NULL,则可以使用函数 它将只计算其中包含值的字段
SELECT SUI, Count(Grades)
FROM mytable
WHERE Score <> ''
GROUP BY SUI
在预期结果中,您不是指5 2而不是4 2吗?您自己尝试过什么?countcolumnname计算非空值!是的意思是5而不是4,但是分数是否声明为NULL而不是notnull,并且没有看到空字符串?问题是分数是一个varchar。它也可以充满words@the_boy_za这不应该是一个问题-你只是在计算它存在的行数,而不是对它进行任何计算,例如,SumGrades列呢?@the_boy_za。它不是NULL,所以COUNT*和COUNTgrades做相同的事情。