获取两条记录之间的差异

时间:2019-02-07 14:55:40

标签: 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

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

1 个答案:

答案 0 :(得分:2)

您可以在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