ПРИСОЕДИНЯЙТЕСЬ НА втором по величине значении (Impala) - PullRequest
0 голосов
/ 17 июня 2020

Я не знаю, как и даже если это возможно .... Я пытаюсь СОЕДИНЯТЬ таблицы со вторым по величине значением. Я пробовал rowNumber, lag, lead и rank, но не смог заставить ни один из них делать то, что мне нужно. Подводя итог, я просто пытаюсь сдвинуть таблицу activitydate на одну строку вниз, чтобы присоединиться к rollDate минус 1 (но не могу использовать -1, потому что они не согласованные даты, отсутствуют дни.)

Есть кто-нибудь знает хороший способ сделать это? Любые предложения приветствуются!

Select 
         ds.activitydate
        ,sum(ws.weeklyTotals / ds.daysBetween) as newRunRates -- getting an average of daily activity from weekly totals 
    from 
        (select 
             fsc.activitydate
            ,fsc.weekstart
            ,max(fsc.activitydate) OVER (partition by fsc.weekstart) as rollUpDate
            ,datediff(to_date(max(fsc.activitydate) OVER (partition by fsc.weekstart)), to_date(fsc.weekstart)) + 1 as daysBetween
        from fiscalcalendar fsc
        ) ds  -- used this to get a week-ending date bc that is what I need to join on. I only have a week start in this table 
    left join 
        (select 
             activitydate_iso 
            ,count(distinct assignedmaincomponentid) as weeklyTotals 
        from activityTable 
        group by 1
        ) ws  -- weeklySplits -- this gives me my weekly totals by a week ending date 
    on ds.rollUpDate = ws.activitydate_iso 
    -- need this join logic to actually be
    -- on ds.rollUpDate = (max(ws.activitydate_iso) where activitydate_iso < rollUpDate) 
    where activitydate between '2020-05-22' and '2020-06-15'
    group by 1,2
    order by 1,2 ```
...