0

我有一个 mysql 表,它存储一个日期范围内的所有天数,用户键入一个开始和结束日期以及一个价格,我将每一天和价格存储为该特定季节的行,这是我拥有的唯一信息。此日期范围可以应用于特定的工作日。

我想做的是抓住所有的日子,按季节和工作日分组。

示例:
我的日期范围为 2013 年 4 月 1 日至 30 日,周一至周五=100 欧元<br>,2013 年 4 月 1 日至 30 日,周六至周日 80 欧元<br>,5 月 1 日至 31 日,周一至周五 = 200 欧元<br> 5 月 1 日至 5 月 31 日周六 - 周日 = 180 欧元<br>

我尝试使用 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 将其与工作日分组?

4

1 回答 1

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,所以可能有语法错误。

于 2013-02-25T18:47:56.517 回答