У меня есть такой набор данных.

Мне нужно написать запрос, который выдаст мне следующий вывод 
для каждого SessionID и VisitID, он должен сортироваться на основе столбца date_time и предоставлять мне первую категорию и последнюю категорию.
Я использовал следующий код
rank() OVER( PARTITION BY SessionID
, VisitID
ORDER by
date_Time DESC ) as click_rank_last
where click_rank_last = 1
, чтобы получить последнюю категорию.Но мне нужно получить первое и последнее в одном запросе с минимальным попаданием в базу данных, поскольку данные огромны и требуют больших затрат.
Нужен самый оптимальный запрос!