ИСПОЛЬЗОВАНИЕ ПОДЗАПРОСА - PullRequest
1 голос
/ 17 июня 2020

ниже - информация о базе данных и таблице. имя базы данных - mis_v1 имя таблицы 1 - таблица поездок 2 имя - клиент

я пробовал ниже запросы

запрос 1

select cl.client_name CLIENT
     , count(t.trip_type) TRIPS
     , count(distinct t.vehicle_reg_no) VEHICLES
  from mis_v1.trips t
  JOIN mis_v1.client cl 
    ON cl.id = t.client_id 
 group 
    by cl.client_name;

результат запроса 1

CLIENT      TRIPS   VEHICLES
anz-ABlr    118     16  
citrix-CBlr 159     15  
dxc-DBlr    26      5   
Eps-Blr     116     24  
goc-GocHyd  191     10
Unisys-BLR  192     55
Wipro-Ncr   86      33
Wipro-Pnq   10      5

Запрос 2

select cl.client_name CLIENT
     , count(t.trip_delay_reason) LATE_TRIPS
  FROM mis_v1.trips t
  JOIN mis_v1.client cl 
    ON cl.id = t.client_id
 where t.trip_delay_reason = "DRIVER"
 group 
    by cl.client_name;

Результат запроса 2

CLIENT       LATE_TRIPS
anz-ABlr        53
citrix-CBlr     25
dxc-DBlr        1
Wipro-Ncr       1
goc-GocHyd      17

Мне нужен результат, как показано ниже

CLIENT     TRIPS    VEHICLES    LATE_TRIPS
anz-ABlr    118     16          53
citrix-CBlr 159     15          25
dxc-DBlr    26      5           1
Eps-Blr     116     24          -
goc-GocHyd  191     10          17
Unisys-BLR  192     55          -
Wipro-Ncr   86      33          1
Wipro-Pnq   10      5           -

Пожалуйста, дайте мне решение. Заранее спасибо

1 Ответ

1 голос
/ 17 июня 2020

Если я вас правильно понял, вам нужно что-то вроде этого:

select cl.client_name CLIENT
     , count(t.trip_type) TRIPS
     , count(distinct t.vehicle_reg_no) VEHICLES
     , coalesce(cast(count(case when t.trip_delay_reason = "DRIVER" then 1 else null end) as char), '-') LATE_TRIPS
from mis_v1.trips t
JOIN mis_v1.client cl 
  ON cl.id = t.client_id 
group 
  by cl.client_name;

Итак, пожалуйста, прочтите больше о COUNT агрегатной функции и, возможно, CASE операторе

...