将按日期的累积值序列转换为非累积值

时间:2016-11-14 14:41:04

标签: mysql

是否可以使用mysql获取累积值的给定日期范围的总和?

假设数据是这样的(周六开始的累积周数 - 不需要日期列,只是显示更改并更容易可视化):

Date       Day         Value
03/11/2016 Thursday    15
04/11/2016 Friday      18
05/11/2016 Saturday     4
06/11/2016 Sunday       6
07/11/2016 Monday       8
08/11/2016 Tuesday     10
09/11/2016 Wednesday   13
10/11/2016 Thursday    17
11/11/2016 Friday      18
12/11/2016 Saturday     2
13/11/2016 Sunday       4
14/11/2016 Monday       6
and so on...

所以例如如果我要求从2016年11月3日到2016年11月4日的结果,我希望看到:3(18-15) 2016年3月3日至2016年11月7日:(18-15)+4 +(6-4)+(8-6)= 11

或者说上面的表格应该转换为:

Date       Day         Value
03/11/2016 Thursday     -
04/11/2016 Friday       3
05/11/2016 Saturday     4
06/11/2016 Sunday       2
07/11/2016 Monday       2
08/11/2016 Tuesday      2
09/11/2016 Wednesday    3
10/11/2016 Thursday     4
11/11/2016 Friday       1
12/11/2016 Saturday     2
13/11/2016 Sunday       2
14/11/2016 Monday       2

在php或其他语言中我会像(伪代码):

If (day != Saturday) {value = currentvalue-yesterdayvalue} else {value = currentvalue)

理想情况下,我想在mysql

中派生出这个

1 个答案:

答案 0 :(得分:2)

SELECT x.*
     , CASE WHEN WEEKDAY(x.date) = 5 
            THEN x.value 
            ELSE x.value-y.value END x 
  FROM my_table x 
  LEFT 
  JOIN my_table y 
    ON y.date = x.date - INTERVAL 1 DAY;