mysql - 获取两条记录之间的差异

标签 mysql

我有一个用户信息表,其中每 24 小时为每个用户添加一条新记录。该记录包含一个 user_id、一个值(一个计数器)和创建日期。

TBL_EXAMPLE
ID | user_id | cnt_val | record_date
--------------------------------------------
1  | 10      | 46      | 2019-02-05 12:14:35
2  | 21      | 12      | 2019-02-05 12:14:35
3  | 32      | 453     | 2019-02-05 12:14:35
4  | 10      | 23      | 2019-02-06 16:11:21
5  | 21      | 34      | 2019-02-06 16:11:21
6  | 32      | 480     | 2019-02-06 16:11:21
7  | 10      | 31      | 2019-02-07 11:34:25
8  | 21      | 44      | 2019-02-07 11:34:25
9  | 32      | 489     | 2019-02-07 11:34:25
...

预期结果:

User 10 Counter: 46 .. 31 --> Difference: 15
User 21 Counter: 12 .. 44 --> Difference: 32
User 32 Counter: 453.. 489 --> Difference: 36

我想为每个特定用户从表中最旧到最新的数据记录动态地列出每个差异。

最佳答案

您可以在 table_exeple 上使用内部连接两次,并为最小和最大日期使用子查询

select distinct t1.user_id,  t1.cnt_va - t2.cnt_val 
from  (
  select user_id , min(date) min_date,  max(date) max_date
  from TTBL_EXAMPLE 
  group by user_id  
) tmm 
inner join TTBL_EXAMPLE t2  ON  t2.date = tmm.max_date
    and t2.user_id = tmm.user_id
inner join  TBL_EXAMPLE t1  ON t1.date = tmm.min_date
    and t1.user_id = tmm.user_id

关于mysql - 获取两条记录之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54576119/

相关文章:

php - 连接 3 个表时无法查看结果

MySQL 按小时分组

php - 无法允许人们更改表中的唯一条目

php - 如何在刷新页面时停止 'Conform form resubmission' 对话框

PHP动态计数函数

php - 使用PHP将日期数据插入Mysql表

java - 如何在 JdbcTemplate 中创建 mySQL 存储过程

mysql - 无法在 MySQL Workbench for Mac 上更新主题

java - 如何将值动态加载到 Tomcat 的 Context XML 文件中

mysql - CodeIgniter 从另一个主机连接数据库