Как в PostgreSql гриппировать по признаку null/not_null?
Есть значит некое поле columnName, которое может содержать либо NULL, либо какую-то произвольную строку. Если написать обычный "GROUP BY columnName", то выборка сгруппируется по каждому значению columnName, которые там почти уникальны и смысла в такой группировки нет. Мне бы хотелось разделить выборку на 2 части: ту, где значение поля NULL и ту, где любое другое значение. Возможно ли это?
Увидел 3 ответа, ну думаю, элементарно, ответили уже. Но зачем так сложно? group by field_name is null
всё. Группировка по выражению, зачем его делать строкой в подзапросе или числом? bool самого по себе более чем достаточно.
select group_id, name
from members
where group_id in (
select group_id
from members
group by 1
having bool_and(name is not null)
);
SELECT department, COUNT(*) as “Num of employees” , AVG(salary) as “Avg Dept. Salary”
FROM employee
GROUP BY department
ORDER BY department NULLS LAST;