Postgresql - как объединить эти два запроса - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь объединить эти два запроса в один.

результатом этих запросов является количество принятых / отклоненных заявок для данного оператора.

Я хочу получить такой результат - в трех столбцах: количество принятых заявок, количество отклоненных заявок и назначенных для них операторов.

select count(applications.id) as number_of_applications, operator_id
from applications
inner join travel p on applications.id = p.application_id
inner join trip_details sp on p.id = sp.trip_id
where application_status ilike '%rejected%'
group by  operator_id
order by number_of_applications desc;


select count(applications.id) as number_of_applications, operator_id
from applications
inner join travel p on applications.id = p.application_id
inner join trip_details sp on p.id = sp.trip_id
where application_status ilike '%accepted%'
group by  operator_id
order by number_of_applications desc;

1 Ответ

2 голосов
/ 23 мая 2019

с условной агрегацией:

select
  sum(case when application_status ilike '%accepted%' then 1 else 0 end) as number_of_applications_accepted,
  sum(case when application_status ilike '%rejected%' then 1 else 0 end) as number_of_applications_rejected, 
  operator_id
from applications
inner join travel p on applications.id = p.application_id
inner join trip_details sp on p.id = sp.trip_id
where (application_status ilike '%rejected%') or (application_status ilike '%accepted%')
group by operator_id;

Вы можете добавить порядок, который вы предпочитаете.

...