Группировать по двум столбцам, где один из них не равен нулю - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть следующая таблица:

c1   c2
1    5
1    6
2    5
2    null
3    null
3    null

expected: 1

Это таблица NxM, где N - количество различных значений c1, а M - количество различных значений c2, поэтому всегда есть одинаковыеколичество пар (c1, c2) для разных c1.

Я хочу выбрать значение из столбца с1, для которого в c2 нет ни одного соответствующего нуля.

Я пытался сделать GROUP BY (c1, null) HAVING (COUNT (*) = 0), но это не сработало.

Как я могу это сделать?

Ответы [ 5 ]

1 голос
/ 25 сентября 2019

Вы можете группировать по столбцу, который хотите выделить, и брать только те группы, которые не имеют значения NULL в c2.case используется для суммирования этих условий

select c1
from your_table
group by c1
having sum(case when c2 is null then 1 else 0 end) = 0
0 голосов
/ 25 сентября 2019

Вот еще один способ сделать это

select c1
from your_table
group by c1
having count(c1)=count(c2);
0 голосов
/ 25 сентября 2019

выберите c1 из таблицы1, где c2 не равно нулю;

0 голосов
/ 25 сентября 2019

Помимо уже предоставленных ответов, вы также можете достичь результата, используя оператор NOT IN следующим образом:

Select distinct c1 from your_table
Where c1 not in 
(select t.c1 from your_table t
Where t.c2 is null 
and t.c1 is not null);

Cheers !!

0 голосов
/ 25 сентября 2019

использование не существует

select c1 from table_name t1
where not exists ( select 1 from table_name t2 where t1.c1=t2.c1 
                               and t2.c2 is null)
...