Есть такая таблица воздушных судов:
ak_code bnum craft_type
AA RA-85205 T154
AA RA-85162 T154
AA RA-26305 AN26
BB RA-85343 T154
CC RA-96002 IL96
CC RA-96012 IL96
CC RA-96016 IL96
Мне надо одним запросом получить такие авиакомпании (ak_code), у которых есть более одного борта (bnum), но при этом все суда только одного типа (craft_type).
Пока придумал только это:
select ak_code,craft_type from crafts
where ak_code in(
select ak_code from crafts
group by ak_code
having count(bnum)>1
)
group by ak_code,craft_type
в результате чего получаем:
ak_code craft_type
AA AN26
AA T154
CC IL96
Правильным должно быть
ak_code craft_type
CC IL96
Подскажите, я на волоске от правильного решения или совсем не в ту сторону ушел? -_-
Ответ
Что то в этом роде:
select ak_code,craft_type from crafts
where ak_code in(
select ak_code from crafts
group by ak_code
having count(bnum)>1 -- Количество бортов более 1 (аналогично count(1))
and count(distinct craft_type)=1 -- Только один уникальный тип ВС
)
group by ak_code,craft_type
Но если дословно следовать тексту и нужны только авиакомпании, то внутреннего подзапроса достаточно самого по себе. Внешний запрос уже выводит типы судов по найденным авиакомпаниям.
update: по предложениям pegoopik
select ak_code,max(craft_type) from crafts
group by ak_code
having count(bnum)>1
and max(craft_type)=min(craft_type)
Комментариев нет:
Отправить комментарий