SQL 查询返回限制日期之前的行数

问题描述 投票:0回答:1

我有以下数据集

顾客 初始日期 限制_日期
菲尔 2023-01-01 2023-06-01
约翰 2023-03-01 2023-07-01
艾莉 2023-09-01 2023-10-01
马克 2023-12-01 2024-03-01

我想按月计算客户在 inial_date 和 limit_date 之间的行数。 我需要得到下面的结果。

客户数量
2023-01 1
2023-02 1
2023-03 2
2023-04 2
2023-05 2
2023-06 2
2023-07 1
2023-08 0
2023-09 1
2023-10 1
2023-11 0
2023-12 1
2024-01 1
2024-02 1
2024-03 1
sql math count
1个回答
0
投票

回答 databricks 因为它更容易。

如果您希望不等式不包含在内,您可以在连接中进行调整。如果您想要更广泛的日期范围,请将参数更改为sequence()。

%sql
with all_dates as (
  select explode(sequence(DATE'2023-01-01', DATE'2024-03-01', INTERVAL 1 DAY)) as day_sequence
)
select all_dates.day_sequence,
       sum(case when yt.customer is not null then 1 
                else 0
            end) as count_on_day
  from all_dates 
  left join
       your_table yt
    on all_dates.day_sequence >= yt.initial_date
   and all_dates.day_sequence <= yt.limit_date
 group by
       all_dates.day_sequence
© www.soinside.com 2019 - 2024. All rights reserved.