Mysql查询在日常记录中建立组日期

时间:2012-04-27 15:02:00

标签: mysql date

我有一张带有day_date的表格,每条记录的价格显示如下:

Day_date   Price
2012-05-20 500
2012-05-21 500
2012-05-22 500
2012-05-23 600
2012-05-24 600
2012-05-25 500
2012-05-26 500
2012-05-27 700
2012-05-28 700

我想要做的是显示如下:

season 2012-05-20 to 2012-05-22 price 500
season 2012-05-23 to 2012-05-24 price 600
season 2012-05-25 to 2012-05-26 price 500
season 2012-05-27 to 2012-05-28 price 700

我正在尝试使用以下查询执行此操作:

SELECT min(day_add) as start_date, max(day_add) as end_date, price 
FROM table GROUP BY price

通过此查询,我得到以下结果:

2012-05-20  2012-05-26  500
2012-05-23  2012-05-24  600
2012-05-27  2012-05-28  700

如你所见,我想要做的是,price=500的第一条记录应该是2012年5月20日至22日,然后是第3条应该是25至26,可能是price=500

由于我按价格分组,因此将季节从2012年的25岁降至26岁。

是否可以SELECT获得我想要的结果?

谢谢

1 个答案:

答案 0 :(得分:1)

问题不在于查询本身,而在于数据,因为没有值分组。您所要做的就是创造新的价值。

你可以这样做:

select min(day_date) minDate, max(day_date) maxDate, price from (
  select day_date, @row := @row + (@price != price) grp, @price := price price
  from t, (select @row := 0, @price := '') init
  order by day_date
) final
group by final.grp, price

您可以在此处使用fiddle