как решить данный коррелированные подзапросы не поддерживается в случае, когда оператор - PullRequest
1 голос
/ 23 апреля 2020

У меня есть этот код, где я пытаюсь подсчитать каждого отдельного пользователя , перечисленного в течение 30 дней до скользящего окна , за последние 40 дней.

например: 12 февраля (12 февраля) / 02) Мне нужно сосчитать всех перечисленных пользователей с 13 января по 12 февраля (30 дней), затем с 11 февраля мне нужно сосчитать с 12 января по 11 февраля и так далее. Мне нужно сделать это ко многим другим датам, есть ли способ сделать это в Presto? видя, что он не поддерживает коррелированный подзапрос, и когда я пытаюсь выполнить приведенный ниже код, он возвращает «Данный коррелированный подзапрос не поддерживается»

WITH
get_date as 
(
  select 
  distinct date_trunc('day',date(uph.last_login)) as dates
  from user_profile_id_history uph 
  where uph.last_login >= date('2020-02-04')-interval '30' day and uph.last_login <= ( date'2020-02-04')
  order by 1 desc
)


select
 get_date.dates,
 (
   case when (dates >= date('2020-02-04')-interval '30' day and dates <= ( date'2020-02-04')) 
   then     
      (
        select
           count(distinct CASE WHEN date_trunc('month',date(up.registration_time)) <= date_trunc('month',uph.last_login) THEN uph.userid END) 
         FROM
             user_profile_id_history uph
         LEFT JOIN
             user_profile up ON uph.userid = up.userid
         where uph.last_login >= dates-interval '30' day and uph.last_login <= dates
       ) end
  ) as mauser       
from get_date
group by 1`

...