0

我将时间序列数据存储在一个表中,如下所示。

   id,       timestamp,             value
   d1   2000-01-01 00:00:00          1
   d1   2000-01-01 01:00:00          2
   d1   2000-01-01 02:00:00          3
   d1   2000-01-01 03:00:00          4
   d1   2000-01-01 04:00:00          5
...
   d2   2000-01-01 00:00:00          25
   d2   2000-01-01 01:00:00          26
   d2   2000-01-01 02:00:00          27
   d2   2000-01-01 03:00:00          28
   d2   2000-01-01 04:00:00          29
   d2   2000-01-01 05:00:00          30
...
   d3   2000-01-01 00:00:00          49
   d3   2000-01-01 01:00:00          50
   d3   2000-01-01 02:00:00          51
   d3   2000-01-01 03:00:00          52
   d3   2000-01-01 04:00:00          53

我需要做的是在表中添加另一列,如下所示。目的是标记每个 id 的数据点数以供进一步处理。

  id,       timestamp,             value,     counter
   d1   2000-01-01 00:00:00          1           1 
   d1   2000-01-01 01:00:00          2           2
   d1   2000-01-01 02:00:00          3           3 
   d1   2000-01-01 03:00:00          4           4
   d1   2000-01-01 04:00:00          5           5
...
   d2   2000-01-01 00:00:00          25          1
   d2   2000-01-01 00:00:00          26          2
   d2   2000-01-01 01:00:00          27          3
   d2   2000-01-01 02:00:00          28          4 
   d2   2000-01-01 03:00:00          29          5
   d2   2000-01-01 04:00:00          30          6
...
   d3   2000-01-01 00:00:00          49          1
   d3   2000-01-01 01:00:00          50          2
   d3   2000-01-01 02:00:00          51          3
   d3   2000-01-01 03:00:00          52          4
   d3   2000-01-01 04:00:00          53          5

如何使用mysql命令实现?谢谢。

4

1 回答 1

0
SELECT
yt.*
, IF(@prev=id, @counter:=@counter + 1, @counter:=1) as counter
, @prev:=id
FROM
yourTable yt
, (SELECT @counter:=0, @prev:=NULL) vars
order by id, `timestamp`

看到它住在这里

于 2013-04-08T15:43:02.000 回答