Rus*_*uss 10 mysql group-by count
我需要计算按特定ID分组的非空(我的意思是包含至少1个字符的字符串)行.例如.我的数据可能如下所示:
form_id mapping
1 'value_1'
1 ''
1 'value_2'
2 ''
2 NULL
3 'value_3'
Run Code Online (Sandbox Code Playgroud)
我想计算每个表单的非空值,所以我希望结果看起来像这样:
form_id mapping_count
1 2
2 0
3 1
Run Code Online (Sandbox Code Playgroud)
如果空值都是NULL,我想我可以使用
SELECT form_id, count(mapping) FROM table GROUP BY form_id
Run Code Online (Sandbox Code Playgroud)
...但是这将包括计数中的零长度字符串,这是我不想要的.
我可以使用where子句只返回映射列中存在值的行,但我想返回没有映射的表单ID,所以这也不好.
我猜我需要某种子查询,但我很难将它组合在一起.
Qua*_*noi 19
SELECT form_id, COUNT(NULLIF(TRIM(mapping), ''))
FROM mytable
GROUP BY
form_id
Run Code Online (Sandbox Code Playgroud)
这不会计算不包含至少一个非空白字符的记录(包括空格字符串,空字符串和NULLs).
如果非空的全空白字符串有效,请使用以下命令:
SELECT form_id, COUNT(NULLIF(mapping, ''))
FROM mytable
GROUP BY
form_id
Run Code Online (Sandbox Code Playgroud)