Выводятся не те значения,которые должны

Имеется 2 таблицы ost_ticket,ost_ticket_action_history.

 create table ost_ticket(
ticket_id int not null PRIMARY KEY,
created timestamp,
staff bool,
status varchar(50),
city_id int
);
create table ost_ticket_action_history(
    ticket_id int not null,
    action_id int not null PRIMARY KEY,
    action_name varchar(50),
    started timestamp,
    FOREIGN KEY(ticket_id) REFERENCES ost_ticket(ticket_id)
);

Моя задача получить конверсию из этапа “Консультация” в этап “Заявка в банк” в разрезе по месяцам (за основу брать дату начала этапа “Заявка в банк”) и городам.введите сюда описание изображения.Конверсия рассчитывается по такой формуле: (количество заявок с этапом “Заявка в банк” / количество заявок с этапом “Консультация”) * 100%.

Мой запрос такой :

select SUM(action_name='Заявка в банк')/SUM(action_name='Консультация') * 2 as 'Конверсия' from ost_ticket_action_history JOIN ost_ticket ot on ot.ticket_id = ost_ticket_action_history.ticket_id where status = 'open' and created > '2020-01-01 00:00:00' group by action_name,started having action_name = 'Заявка в банк';

И выводится:введите сюда описание изображения

Прощу прощения, если написал не очень понятно.Обьясните,пожалуйста,что делать


Ответы (1 шт):

Автор решения: Alexander Pavlov
select
 sum(case when b.ticket_id is not null then 1 else 0 end) / count(*) conversion,
  year(a.started) as "year", 
  month(a.started) as "month"
from
   ost_ticket_action_history a
   left join ost_ticket_action_history b on a.ticket_id = b.ticket_id and b.action_name = 'Заявка в банк'
where
   a.action_name = 'Консультация'
group by
  year(a.started), month(a.started) 
→ Ссылка