OFFERS表包含有关银行客户贷款优惠的信息。每个报价都有一个标识符(offer_id), start_date, expiration_date
。如果此报价的dt
介于start_date
和end_date
之间,则此报价在日期dt
视为有效。
如何显示2020年每天的活跃报价数量?数据看起来像:
offer_id start_date end_date 123 2020-05-01 2020-05-17 5432 2020-12-01 2020-09-19
一个选项使用递归查询生成一年中的所有日子,然后使用left join
创建表。
在SQLite中:
with recursive dates as (
select '2020-01-01' dt
union all
select date(dt, '1 day') from dates where date(dt, '1 day') < '2021-01-01'
)
select d.dt, count(o.offer_id) cnt_active_offers
from dates d
left join offers o on d.dt between o.start_date and o.end_date
group by d.dt