首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres的MIgrating MySQL查询

Postgres的MIgrating MySQL查询
EN

Stack Overflow用户
提问于 2019-11-02 06:51:40
回答 1查看 62关注 0票数 0

我有一个MySQL查询,它可以很好地工作,但现在我们正在迁移到Postgres,但由于MySQL中使用的变量,它不能工作。查询如下:

代码语言:javascript
复制
SELECT COUNT
    (
        ((
                speed / 3.6 - prevspeed / 3.6 
            ) / TIMESTAMPDIFF ( SECOND, prevdatenew, servertime )) / 9.80665 
    ) AS hardAccels 
FROM
    (
    SELECT ID
        ,
        servertime,
        @prevDateNew AS prevdatenew,
        @prevDateNew := servertime,
        speed,
        @prevSpeed AS prevspeed,
        @prevSpeed := speed 
    FROM
        tc_positions 
    WHERE
        deviceid = 32 
        AND ` ID ` BETWEEN 1318429 
        AND 1322230 
    ) t1 

WHERE
    ((
        speed / 3.6 - prevspeed / 3.6 
    ) / TIMESTAMPDIFF ( SECOND, prevdatenew, servertime )) / 9.80665 > 0.255;

这将返回一个错误,因为它无法识别mysql中使用的变量:

代码语言:javascript
复制
ERROR:  syntax error at or near ":="
LINE 9:                @prevDateNew:=servertime,
                                   ^

有什么办法来解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-02 14:40:38

您正在使用变量来访问前一行上的值。对于PostgreSQL,您应该使用ANSI SQL标准函数lag。这个函数是一个窗口函数,所以你必须指定顺序。我没有你的数据,你的表,所以下面的查询只是为了寻找灵感

代码语言:javascript
复制
SELECT speed - lag(speed,1) OVER (ORDER BY id) /
       EXTRACT(epoch FROM (
            servertime - lag(servertime, 1) OVER (ORDER BY id))) 
  FROM tc_positions
   ...

关于这个主题的很好的文章是http://www.postgresqltutorial.com/postgresql-window-function/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58666742

复制
相关文章

相似问题

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