越来越多的月份过去了 - MySQL

时间:2017-01-24 20:48:59

标签: mysql sql

我想创建下面描述的MonthCount列。我已经创建了ID和日期字段我只是想要一个聪明的方法来计算已经过去的日期数。日期始终是本月的第一个月,但第一个月可能是1月到12月之间的任何月份。

ID    Date    MonthCount
1     1/2016  1 
1     2/2016  2
1     3/2016  3
2     5/2015  1
2     6/2015  2
2     7/2015  3

似乎我记得在某个地方阅读过使用>加入桌子的方法。或者<操作员,但我无法完全回想起这种方法。

2 个答案:

答案 0 :(得分:0)

在MySQL中处理此问题的最佳方法是使用变量:

  select t.*,
         (@rn := if(@id = id, @rn + 1,
                    if(@id := id, 1, 1)
                   )
         ) as rn
  from t cross join
       (select @rn := 0, @id := -1) params
  order by id, date;

答案 1 :(得分:0)

看起来你正在寻找:

select a.id, a.date, b.mindate
from table as a
inner join (
    select id, min(date) as mindate
    from table
    group by id
) as b on (a.id=b.id)

这会给你

ID    Date    mindate
1     1/1/2016  1/1/2016
1     1/2/2016  1/1/2016
1     1/3/2016  1/1/2016
2     1/5/2015  1/5/2015
2     1/6/2015  1/5/2015
2     1/7/2015  1/5/2015

现在做的功课是弄清楚如何在两个日期之间计算difference