#sql
Есть такая таблица воздушных судов: 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 Подскажите, я на волоске от правильного решения или совсем не в ту сторону ушел? -_-
Ответы
Ответ 1
Что то в этом роде: 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)
Комментариев нет:
Отправить комментарий