在计算Oracle DB上的保留时,我编写了以下代码:
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éFROM ORAàl‘expectedévu“(ORA-00923,来自关键字not help help),你们能帮我吗?
发布于 2016-10-16 11:41:44
下面是一种更"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;备注:
group by应该包含列名,它实际上是"1",而不是"3“。order by,因为结果将是一个不确定的顺序。发布于 2016-10-16 10:30:38
Oracle不识别Postgres的::语法,因此它抱怨缺少的FROM关键字在预期的地方找不到。
使用cast,而不是:
count(distinct futureactivity.visitorIdd) / cast(count(distinct sessions.visitorIdd) as float) as retentionhttps://stackoverflow.com/questions/40069190
复制相似问题