我的任务是创建一个表,其中包含一个新列,其中当前行和下一行的年龄之间存在差异。年龄应该按降序排列。可以用SQL来做吗?我不知道应该使用什么sql,并且任务中没有指定。
我明白括号里应该有一些东西
SELECT name, age, (...) AS difference
FROM Animals
ORDER BY age DESC;
Run Code Online (Sandbox Code Playgroud)
我有“动物”表
编号 | 名称 | 年龄 1 | 莫莉 | 4 2 | 杰克逊| 8 3 | 旺卡 | 38 4 | 波莉 | 7
结果表应如下所示:
名称 | 年龄 | 不同之处 旺卡 | 38 | 38 30 杰克逊| 8 | 1 波莉 | 7 | 3 莫莉 | 4 |
你需要lead()功能:
SELECT
name,
age,
age - lead(age) over (order by age desc, name) AS difference
FROM Animals
ORDER BY age DESC
Run Code Online (Sandbox Code Playgroud)
请参阅演示。
结果:
> name | age | difference
> :------ | --: | ---------:
> Wonka | 38 | 30
> Jackson | 8 | 1
> Polly | 7 | 3
> Molly | 4 |
Run Code Online (Sandbox Code Playgroud)