Как получить первое non-NULL значение в группе для данного поля?

Для того чтобы получить первое ненулевое значение в группе для данного поля, можно воспользоваться функцией MIN() в сочетании с оператором CASE.

Вот пример SQL-запроса, который решает эту задачу:

SELECT field, MIN(CASE WHEN field IS NOT NULL THEN field END) AS first_non_null_value
FROM table
GROUP BY field;

В этом запросе мы выбираем поле field и минимальное ненулевое значение (MIN) из этого поля для каждой группы (GROUP BY field). Оператор CASE проверяет, является ли значение поля field ненулевым, и если да, то возвращает это значение, в противном случае возвращает NULL. Функция MIN выбирает минимальное ненулевое значение для каждой группы.

Например, предположим, что у нас есть таблица users со следующими данными:

+----+-------+
| id | name  |
+----+-------+
| 1  | John  |
| 2  | NULL  |
| 3  | Alice |
| 4  | NULL  |
| 5  | Bob   |
| 6  | Bob   |
+----+-------+

Если мы применим вышеприведенный SQL-запрос к полю name, то получим следующий результат:

+-------+-------------------+
| name  | first_non_null_value |
+-------+-------------------+
| John  | John              |
| NULL  | Alice             |
| Alice | Alice             |
| NULL  | Bob               |
| Bob   | Bob               |
+-------+-------------------+

Таким образом, в результате выполнения запроса мы получили первое ненулевое значение для каждой группы в поле name.