Integrante do Painel Nick:
Eu tenho 2 tabelas no MySQL:
emails_sent(
id int primary key,
id_type int,
date_sent datetime)
emails_clicks(
id int primary key,
id_email int,
date_click datetime,
foreign key(id_email) references emails_sent(id))
Eu quero escrever uma consulta, que irá retornar uma porcentagem de e-mails, que foram clicados o mais tardar 10 minutos após o usuário recebeu um e-mail. Agrupadas por cada tipo de e-mail (id_type). Como posso fazer isso?
GMB:
Você pode fazer uma média condicional.
No MySQL, que seria:
select s.id_type, avg(c.date_click < s.date_sent + interval 10 minute) res
from email_sent s
left join email_clicks c on c.id_email = s.id
group by id_type
Para cada linha em cada um email_sent
, a consulta se recupera a linha correspondente email_clicks
; se o e-mail foi clicado menos de 10 minutos, a condição dentro de avg()
retornos 1
, else 0
. A média dá-lhe a proporção de e-mails que foram clicados menos de 10 minutos depois de ser enviado (como um valor decimal entre 0 e 1).