sql - 如何使用 SQL 获取上一个日期的列数?
问题描述
我有下表,
id status price date
2 complete 10 2020-01-01 10:10:10
2 complete 20 2020-02-02 10:10:10
2 complete 10 2020-03-03 10:10:10
3 complete 10 2020-04-04 10:10:10
4 complete 10 2020-05-05 10:10:10
所需的输出,
id status_count price ratio
2 0 0 0
2 1 10 0
2 2 30 0.33
我正在寻找添加上一行的价格。第 1 行是 0,因为它没有前一行值。查找比率即 10/30=0.33
解决方案
您可以使用分析功能ROW_NUMBER
,SUM
如下所示:
SELECT
id,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY date) - 1 AS status_count,
COALESCE(SUM(price) OVER (PARTITION BY id ORDER BY date), 0) - price as price
FROM yourTable;
推荐阅读
- javascript - 从具有不同值数组的单个键数组转换键值对
- javascript - 在 GridFS 中将 readStream 转换为 String 时不断出现“未定义”
- blender - procedural mesh creation with blender script
- matlab - 在矩阵的每一行中查找元素的列位置,并存储在矩阵中
- sql-server - SQL Server trigger on a procedure failing
- lua - 尝试在 Lua 中创建对象时出现“尝试索引零值错误”
- java - How does java.util.HashMap.containsValue() work? What is it's time complexity?
- php - Laravel ajax 发布调用失败
- java - 试图用对象填充屏幕
- reactjs - Calling a function not working in react constructor