Как вернуть последние три даты, связанные с первичным ключом, с внутренним соединением с другой таблицей и определить, какой процент кликнул - PullRequest
1 голос
/ 17 октября 2019

У меня есть две таблицы, которые мне нужно объединить с двумя датами.

Таблица 1 = TStudy (приглашенные люди)

Таблица 2 = TClicks (люди, которые нажали)

Каждая таблица связана с датой.

Таблица 1 = dInvite (дата приглашения людей)

Таблица 2 = dLogDate (дата, когдалюди нажали на приглашение)

В обеих таблицах есть первичный ключ (lPeopleID), который разрешает объединение.

Что я хочу для отдельных столбцов:

  • Я хочу получить последние 3 даты приглашения.

  • Я хочу выбрать последние 3 даты приглашения, какой процент (или число (т. Е. 1/3, 2/3 или 3/3 приглашения)) нажали.

По сути, это фактор отклика, который показывает, сколько людей, приглашенных на исследование, щелкнули по исследованию. Существует около 100 000 идентификаторов, поэтому я хочу иметь возможность показывать это для каждого отдельного идентификатора.

1 Ответ

0 голосов
/ 17 октября 2019

Я бы начал с транспонирования приглашений и кликов. Затем выполняем сравнение дат. Вот как транспонировать, используя CTE и PIVOT в SQL Server:

WITH cteTStudy AS (
        SELECT lPeopleID,dInvite,
                ROW_NUMBER() OVER(PARTITION BY lPeopleID ORDER BY dInvite) AS InviteNumber
        FROM TStudy 
    ), cteTClicks AS (
        SELECT lPeopleID,dLogDate ,
                ROW_NUMBER() OVER(PARTITION BY lPeopleID ORDER BY dLogDate ) AS ClickNumber
        FROM TClicks  
    ), cteTStudyPvt AS (

        SELECT lPeopleID,[1] AS Invite1, [2] AS Invite2, [3] AS Invite3 
        FROM
        (
            SELECT lPeopleID,dInvite,InviteNumber
            FROM cteTStudy
        ) AS SourceTable  
        PIVOT  
        ( 
            MAX(dInvite)  FOR InviteNumber IN ([1], [2], [3])  
        ) AS PivotTable

    ), cteTClicksPvt AS (

        SELECT lPeopleID,[1] AS Click1, [2] AS Click2, [3] AS Click3 
        FROM
        (
            SELECT lPeopleID,dLogDate,ClickNumber
            FROM cteTClicks
        ) AS SourceTable  
        PIVOT  
        ( 
            MAX(dLogDate)  FOR ClickNumber IN ([1], [2], [3])  
        ) AS PivotTable
    )

    SELECT i.lPeopleID,Invite1,Invite2,Invite3,Click1,Click2,Click3,p.lremoved
    FROM cteTStudyPvt AS i LEFT JOIN cteTClicksPvt as c ON i.lPeopleID = c.lPeopleID LEFT JOIN TProfile p ON i.lPeopleID = p.lPeopleID

Затем напишите код для сравнения между Пригласить1 и Клик1 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...