mysql - SQL LAG 和 Over 函数返回错误 #1064

标签 mysql sql lag rownum

我正在尝试使用SQL LAG函数来比较去年和今年的人口,然后计算增长。我正在使用的代码不断抛出错误代码#1064。我在 MAC 上使用 XAMPP 服务器。

我正在使用的代码不断抛出错误代码#1064。我在 MAC 上使用 XAMPP 服务器。我有人口值字段的城市代码、句号和数字。该表称为人口。

SELECT
    city_code,
    period,
    numb
    ,LAG(numb,1,0) 
    OVER(ORDER BY period) 
FROM population

我希望输出显示新列,其中包含前几年当前年份的人口计算结果以及后期的增长情况。

最佳答案

请尝试此查询。这是 row_number() 的替换,仅在 mysql 版本 8.0 中支持。对于mysql 5.7以下,使用变量生成row_num()

set @pos = 0;
set @pos2 = 0;

select t1.*, ifnull(t2.numb, 0) from (
select @pos:=@pos+1 as pos, city_code, period, numb from population order by period asc) t1
left join 
    (select @pos2:=@pos2+1 as pos, numb from population order by period asc) t2 on t2.pos = t1.pos - 1

关于mysql - SQL LAG 和 Over 函数返回错误 #1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57403858/

相关文章:

时间:2019-05-17 标签:c#mysqlwebhostingconnectionfailserver

sql - hive -如果cast(col as timestamp)为零,为什么要删除毫秒数呢?

php - MySQL查询结果中某项的顺序

SQL Server 错误 515

r - 如何在 R 的时间序列中滞后日期索引?

r - data.table:如何按组指示唯一列值的第一次出现

mysql - 如何通过比较两个表中的列来填充外键

mysql - 改进特定的 MySQL 查询以减少 CPU/磁盘密集型

php - 如何从表 MySQLi 中每列的末尾删除 5 个字符

javascript - HTML Canvas 滞后