Выводятся не те значения,которые должны
Имеется 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 шт):
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)
