2016-10-16 4 views
0

При расчете удержания на БД Oracle, я написал этот код:ORA-00923 ошибка: FROM ключевое слово не найдено, где ожидается

select 
sessions.sessionDate , 
count(distinct sessions.visitorIdd) as active_users, 
count(distinct futureactivity.visitorIdd) as retained_users, 
count(distinct futureactivity.visitorIdd)/count(distinct sessions.visitorIdd)::float as retention 
FROM sessions 
left join sessions futureactivity on 
sessions.visitorIdd=futureactivity.visitorIdd 
and sessions.sessionDate = futureactivity.sessionDate - interval '3' day 
group by 3; 

, но я всегда получаю сообщение об ошибке: «ORA-00923: MOT-CLE ОТ отсутствует à l'emplacement prévu "(ORA-00923 FROM ключевое слово не найдено, где ожидалось) Можете ли вы помочь мне, ребята?

ответ

0

Вот более "Oracle" способ написания запроса:

select s.sessionDate , 
     count(distinct s.visitorIdd) as active_users, 
     count(distinct fs.visitorIdd) as retained_users, 
     count(distinct fs.visitorIdd)/count(distinct s.visitorIdd) as retention 
from sessions s left join 
    sessions fs 
    on s.visitorIdd = fs.visitorIdd and 
     s.sessionDate = fs.sessionDate - interval '3' day 
group by s.sessionDate 
order by s.sessionDate; 

Примечание:

  • Oracle не требует преобразований с деление целых чисел.
  • group by должен содержать имя столбца, и это фактически «1», а не «3».
  • Более короткие псевдонимы таблицы облегчают запись и чтение.
  • Возможно, вам понадобится order by, потому что результаты будут в неопределенном порядке.
  • Возможно, лучший способ написать этот запрос, используя функции окна.
+0

Это прекрасно работает, большое спасибо Гордону. ^^ –

1

Оракул не распознает синтаксис Postgres ::, поэтому он жалуется на недостающее ключевое слово FROM, которое не будет найдено там, где это ожидалось.

Используйте слепок вместо:

count(distinct futureactivity.visitorIdd)/cast(count(distinct sessions.visitorIdd) as float) as retention 
+0

Спасибо большое, он работал, но пришла другая ошибка до:/ –

+0

Я выполняю код по этой ссылке: https://www.periscopedata.com/blog/how-to-calculate-cohort-retention -in-sql.html –

+0

новая ошибка: «ORA-00979: N'est pas une выражение GROUP BY» –

 Смежные вопросы

  • Нет связанных вопросов^_^