Мне нужно подсчитать непустые (под которыми я подразумеваю строку, содержащую не менее 1 символа) строки, сгруппированные по определенному идентификатору. Например. мои данные могут выглядеть так:
form_id mapping
1 'value_1'
1 ''
1 'value_2'
2 ''
2 NULL
3 'value_3'
и я хочу подсчитать непустые значения для каждой формы, поэтому я хочу, чтобы результаты выглядели так:
form_id mapping_count
1 2
2 0
3 1
Если бы все пустые значения были NULL, я думаю, я мог бы использовать
SELECT form_id, count(mapping) FROM table GROUP BY form_id
... но это будет включать в счет строки нулевой длины, чего я не хочу.
Я мог бы использовать предложение where, чтобы возвращать только строки, в которых существует значение в столбце сопоставления, но я хочу вернуть идентификаторы форм, у которых нет сопоставлений, так что это тоже нехорошо.
Я предполагаю, что мне нужен какой-то подзапрос, но у меня проблемы с его сборкой.