我有一张带有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
获得我想要的结果?
谢谢
答案 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。