Теперь у меня есть таблица, которая выглядит следующим образом:
VisitorId VisitId visittime hitNumber Pagetitle EventCategory
1001 0001 2017-12-31 1 Product scroll down
1001 0001 2017-12-31 2 Product click
1001 0001 2017-12-31 3 Product Fill info
1002 0002 2017-12-31 1 Homepage Download
1002 0002 2017-12-31 2 Contact /
1002 0002 2017-12-31 3 Check out Shopping cart
1002 0002 2017-12-31 4 Check out Abandon shopping cart
Что мне нужно сделать, это всегда извлекать последнее действие, которое посетитель делает на нашем сайте.
Мое настоящее решение состоит в том, чтобы разделить таблицу на 2, взять максимальное количество попаданий и объединиться с оставшейся информацией, т.е.
Select
visitorid,
VisitId,
visittime,
MAX(a.hitnumber) action_hit,
b.Pagetitle,
b.EventCategory
from
table a
left join (
Select
visitorid,
visitId,
visittime,
hitnumber,
Pagetitle,
EventCategory
FROM
table ) b ON a.visitorid = b.visitorid AND a.visitId = b.visitId
AND a.visittime = b.visittime
GROUP BY 1,2,3,5,6
HAVING MAX(a.hitnumber) = b.hitnumber
Но мне любопытно, есть ли другая альтернатива, котораяЯ могу сделать скрипт короче и с тем же эффектом.
У кого-нибудь есть идеи для этого?Большое спасибо за вашу помощь заранее!