Найти строки, в которых значение столбца для всей группы равно «P» - PullRequest
0 голосов
/ 03 января 2019

У меня есть таблица «Камера», мне нужно найти камеру, которая использовала только Camera_mode 'P' и никакой другой режим.

Структура таблицы

Cam_serial_no     Camera_mode

abc123             P
abc123             B
abc123             V
pqr111             P
xyz101             P
xyz101             V
xyz101             B

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

select * 
from (select Cam_serial_no, collect_set(camera_mode) as val 
      from camera 
      group by Cam_serial_no
) a 
where size(val)=1 and val[0] = 'P';

желаемый результат равен

pqr111             P

1 Ответ

0 голосов
/ 03 января 2019

Группируйте по Cam_serial_no и берите только те, у которых нет режима, отличного от P

select Cam_serial_no
from camera
group by Cam_serial_no
having sum(Camera_mode <> 'P') = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...