sql - 仅当它们与前几天的值不同时才返回行
问题描述
sales
-id
-user_id
-amount
-datetime
sales 表每天为每个 user_id 获取一条新记录。
我想要一个选择查询,它返回我当天的所有行,只有当“金额”与前几天不同时。
更新
5 123 700 2017/01/05
4 123 500 2017/01/04
3 123 1500 2017/01/03
2 123 1500 2017/01/02
1 123 500 2017/01/01
因此,如果您在 5 日搜索记录,您将得到 1 行,因为它与前几天不同。
5 123 700 2017/01/05
但如果您在 3 日运行查询,由于 1500 美元的金额与 2 日相同,您将得到 0 个结果。
希望这可以清除它。
解决方案
您可以尝试为此使用 Lead() 和 Lag() SQL Analytic 函数
SELECT *
from (SELECT *, LAG(AMOUNT) over (partition by user_id order by datetime) as Yesterday_AMOUNT
from SALES s
) x
where cast(s.datetime as date) = cast(getdaate() as date) and
x.AMOUNT <> s.Yesterday_AMOUNT;
推荐阅读
- java - Spring Boot 和 Angular servlet
- swift - 如何在 iOS 的 tableview 中找到第 n 个索引路径?
- ios - 从单元格 collectionView 中的点击中放松
- c++ - C++ 中的分段错误(特征库)
- angular - 最新版本的故事书不适用于 Angular2+ 项目
- r - 在闪亮的应用程序中同时显示多个范围的数据表行
- javascript - 带有php的javascript代码不起作用
- spring-boot - 使用 Spring Batch 将多个 CSV 文件加载到数据库中
- php - 没有模板的重定向?
- reactjs - React 日期选择器使用较旧的 React 版本