如何排除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。或者你是什么意思?哇,真聪明!非常感谢你!