gpt4 book ai didi

mysql - 如何排除使用 mysql 窗口函数创建的日期范围中的间隙?

转载 作者:行者123 更新时间:2023-11-29 09:43:49 25 4
gpt4 key购买 nike

我每个工作日都有销售额(第四个和第五个是周末):

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;

关于mysql - 如何排除使用 mysql 窗口函数创建的日期范围中的间隙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56077823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com