首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00923错误: FROM关键字未在预期的位置找到

ORA-00923错误: FROM关键字未在预期的位置找到
EN

Stack Overflow用户
提问于 2016-10-16 10:19:05
回答 2查看 750关注 0票数 0

在计算Oracle DB上的保留时,我编写了以下代码:

代码语言:javascript
复制
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),你们能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-16 11:41:44

下面是一种更"Oracle“的查询编写方式:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-10-16 10:30:38

Oracle不识别Postgres的::语法,因此它抱怨缺少的FROM关键字在预期的地方找不到。

使用cast,而不是:

代码语言:javascript
复制
count(distinct futureactivity.visitorIdd) / cast(count(distinct sessions.visitorIdd) as float) as retention
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40069190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档