Как выбрать значения не-NA для каждого идентификатора, если они есть, в противном случае выберите NA в Oracle? - PullRequest
1 голос
/ 19 апреля 2020

У меня есть df, который может иметь одну / несколько строк на один идентификатор. Если в нем есть несколько строк, только 1 строка заполняется значением, отличным от NA, для столбца. Иногда все ряды являются NA. Используя Oracle, я хочу запросить не-значения NA, если они существуют, иначе значения NA как есть.

df:
ID Category  
1  NA  
1  A  
1  NA  
2  B  
2  NA  
3  NA  
4  C

В качестве окончательного результата я хочу получить следующее df.

df:
ID  Category  
1  A  
2  B  
3  NA  
4  C

Я попытался соединиться с предложением where, не являющимся NA, но в котором пропущен ID 3.

1 Ответ

0 голосов
/ 19 апреля 2020

Предполагая, что в категории столбцов нет нулей, для данных этого примера вы можете использовать условное агрегирование:

select id, 
  coalesce(max(case when category <> 'NA' then category end), 'NA') category
from tablename
group by id

См. demo .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...