sql - SQL查询从数据中获取最新价格?
问题描述
我的 Oracle 表中有这些数据:
product_id
在此表中,我有多种产品在特定时间具有和价格。
我想编写一个 SQL 查询来根据TIME
列(Oracle - Long Type)获取每种产品的最新价格。
但问题出在这里,因为我们对产品的表价监控从前一天的 23:00 开始。
需要输出:当我将 2-Dec-2019 作为参数传递给 SQL 查询时
如何使用 SQL 查询来做到这一点?或者我是否需要根据 if 和 else 条件为其编写存储过程?
提前致谢。
解决方案
我们可以尝试使用ROW_NUMBER
这个要求:
WITH cte AS (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY product_id ORDER BY time DESC) rn
FROM yourTable t
WHERE system_date = date '2019-12-19'
)
SELECT local_date, system_date, currency, product_id, time, current_price
FROM cte
WHERE rn = 1;
推荐阅读
- bootstrap-5 - 导航中带有两个单词的引导按钮会导致第二个单词换行
- mysql - SQL 过滤掉与条件匹配的字符串,并有特定的异常通过
- xaml - 有没有办法将一个 Xamarin Forms 控件与另一个“关联”?
- django - Django get request.POST.get() 参数未按预期工作,带括号的参数名称 []
- sql - Laravel Eloquent 如何从日期范围内的 2 个表中获取数据
- r - 有没有办法为使用具有填充美学的因子变量的 ggplot 条形图提供 n 个计数?
- node.js - 如何将基于 Node js 的网站转换为移动应用程序?
- python - Python - 如何通过 Selenium 发送键发送数值
- spring-boot - 命名休眠查询的列表在哪里?
- javascript - 显式删除 DOM 元素以避免 javascript 中的内存泄漏