我有一个mysql表,用于存储日期范围内的所有日期,用户键入开始日期和结束日期以及价格,我将每天和价格存储为特定季节的行,这是我拥有的唯一信息。此日期范围适用于特定工作日。
我想要做的就是按季节和工作日分组。
示例:
我的日期范围是2013年4月1日至30日,星期一到星期五= 100€
星期六至星期日2013年4月1日至30日期间80€
星期一 - 星期五= 200€,1月5日至31日
并且1月5日至31日可以是星期六 - 星期日= 180€
我尝试使用php对此进行分组,但后来却错过了正确的日期
数据库如下所示:
Day | Price
2013-04-01 | 100€
2013-04-02 | 100€
2013-04-03 | 100€
2013-04-04 | 100€
2013-04-05 | 100€
2013-04-06 | 80€
2013-04-07 | 80€
2013-04-08 | 100€
2013-04-09 | 100€
2013-04-10 | 100€
...
有没有办法使用PHP将其分组为工作日的季节?
答案 0 :(得分:0)
你正在尝试分组。您需要获取工作日和组的名称。
方法是找到一个"名称"对于连续值。这个"名称"是工作日或周末价格与当前价格不同的未来日期(如果我理解正确的话)。
完成分组后,只需使用group by
即可获得期间的开头和结尾:
select min(day) as startday, max(day) as endday, price
from (select t.*,
(select day
from t t2
where (case when weekday(t2.day) bewteen 0 and 4 then 'Week' else 'Weekend' end) =
t.period and
t2.day > t.day and
t2.price <> t.price
) as grouping
from (select t.*, (case when weekday(day) bewteen 0 and 4 then 'Week' else 'Weekend' end) as period
from t
) t
) t
group by grouping, price
我还没有测试过这个SQL,因此可能存在语法错误。