我有一张表:
Date Name Rating
01-Dec-14 Ash A
02-Dec-14 Ash A
03-Dec-14 Ash AA
04-Dec-14 Rob BB
05-Dec-14 Rob BB
06-Dec-14 Charly A
07-Dec-14 Charly AA
我只是写一个sql查询,它给出了日期/名称/评级,其中评级在日期之间发生了变化。更准确地说,我想知道一段时间内哪些名称的评级发生变化。
感谢很多。
答案 0 :(得分:0)
最简单的方法是使用变量枚举行然后聚合:
select name, rating, min(date) as firstdate, maxdate(lastdate)
from (select t.*,
(@grp := if(@nr = concat_ws(':', name, rating), @grp,
if(@nr := concat_ws(':', name, rating), @grp + 1, @grp + 1)
)
) as grp
from table t cross join
(select @grp := 0, @nr := '') params
order by name, date
) t
group by name, grp, rating;