SQL-запрос на красное смещение, чтобы получить первое и последнее значение - PullRequest
0 голосов
/ 06 марта 2019

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

enter image description here

Мне нужно написать запрос, который выдаст мне следующий вывод enter image description here

для каждого SessionID и VisitID, он должен сортироваться на основе столбца date_time и предоставлять мне первую категорию и последнюю категорию.

Я использовал следующий код

 rank() OVER( PARTITION BY SessionID
            , VisitID

        ORDER by
            date_Time DESC ) as click_rank_last
where click_rank_last = 1

, чтобы получить последнюю категорию.Но мне нужно получить первое и последнее в одном запросе с минимальным попаданием в базу данных, поскольку данные огромны и требуют больших затрат.

Нужен самый оптимальный запрос!

1 Ответ

2 голосов
/ 06 марта 2019

Один путь будет:

select distinct
       sessionid,
       visitid,
       first_value(category) over (
            partition by sessionid, visitid
            order by date_time
            rows between unbounded preceding and unbounded following),
       last_value(category) over (
            partition by sessionid, visitid
            order by date_time
            rows between unbounded preceding and unbounded following)
from   tbl
...