如何排除mysql窗口函数造成的日期范围的差距?

如何排除mysql窗口函数造成的日期范围的差距?,mysql,sql,Mysql,Sql,我得到了每个工作日的销售额第四个和第五个是周末: date sales 2019-05-02 5 2019-05-03 5 2019-05-06 5 2019-05-07 10 2019-05-08 10 我想创建具有相同销售额的日期范围。但范围不应包括差距。所以我需要的是: from_date to_date sales 2019-05-02 2019-05-03 5 2019-05-06 2019-05-06 5 2019-05-07 2019

我得到了每个工作日的销售额第四个和第五个是周末:

date        sales
2019-05-02  5
2019-05-03  5
2019-05-06  5
2019-05-07  10
2019-05-08  10
我想创建具有相同销售额的日期范围。但范围不应包括差距。所以我需要的是:

from_date   to_date     sales
2019-05-02  2019-05-03  5
2019-05-06  2019-05-06  5
2019-05-07  2019-05-08  10
这是我当前的问题:

SELECT * FROM (
    SELECT
       MIN(date) OVER(my_window) AS from_date,
       MAX(date) OVER(my_window) AS to_date,
       sales
    FROM sales_table
    WINDOW my_window AS (
        PARTITION BY sales
    )
) AS window_query
GROUP BY from_date, to_date, sales
提供:

from_date   to_date     sales
2019-05-02  2019-05-06  5
2019-05-07  2019-05-08  10

我如何才能做到这一点?

这是一个缺口和孤岛问题。你可以通过从日期中减去一系列数字来解决这个问题。连续日期将具有相同的日期:

SELECT MIN(date), MAX(date), sales
FROM (SELECT s.*,
             ROW_NUMBER() OVER (PARTITION BY sales ORDER BY date) as seqnum
       FROM sales_table s
      ) s
GROUP BY sales, date - interval seqnum day;

我想要的似乎并不一致。也许你应该再看一眼,我不想总结销售情况。我想说的是:从第二次到第三次,销售额都是5。或者你是什么意思?哇,真聪明!非常感谢你!