Как выбрать последний непрямой источник, используя SQL - PullRequest
0 голосов
/ 13 июля 2020

У меня есть следующие точки соприкосновения:

Session Number  Source
1               direct
2               social
3               paid
4               direct
5               direct
6               direct

Мне нужно выбрать источник Last-Non Direct… который оплачивается в этом примере (сеанс 3).

Учтите, что это могут быть случаи, в которых должно отображаться только прямое, а затем прямое. Таким образом, в основном нам нужно иметь то же, что и в Google Analytics: Последняя непрямая атрибуция.

Какой SQL код может это сделать?

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Мне нужно выбрать источник Last-Non Direct… который оплачивается в этом примере (сеанс 3).

В Postgres вы должны использовать:

select t.*
from t
where Source <> 'direct'
order by session_number desc
limit 1;

Вместо limit вы также можете использовать:

fetch first 1 row only

Если вам не нужна фильтрация, вы можете использовать:

select t.*
from t
where Source <> 'direct'
order by (source = 'direct') asc,  -- put last
         session_number desc
limit 1;

Или, если хотите номер сеанса, можно использовать условное агрегирование:

select coalesce( max(session_number) filter (where source <> 'direct'),
                 max(session_number)
from t;
0 голосов
/ 13 июля 2020

Для вашего примера это должно работать

SELECT TOP 1 * FROM [Your_Table] 
WHERE Source <> 'direct'
ORDER BY [Session Number] DESC

Аналогичный вопрос

EDIT1:

SELECT * FROM [Your_Table] 
WHERE 
--checking if anything else except 'direct' exists, if so, take the last one non direct
(EXISTS (SELECT * FROM [Your_Table] WHERE source <> 'direct') AND source <> 'direct') 
OR 
--if nothing except direct doesn't exist, just take the last row
NOT EXISTS (SELECT * FROM [Your_Table] WHERE source <> 'direct')
ORDER BY [session number] DESC
LIMIT 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...