【问题标题】:Generate sales fact data from a date range从日期范围生成销售事实数据
【发布时间】:2021-03-26 08:51:32
【问题描述】:

我有一个包含以下字段的“展示位置”表:

id,
name (string),
start_date (date),
end_date (date),
hourly_rate (float)

我的目标是运行报告以查看基于此展示位置数据的计费预测,其中每个工作日 (M-F) 计费 8 小时。计费预测需要能够每周或每月运行一次。

例如,在 2021 年 1 月 1 日至 2021 年 1 月 31 日创建了一个新的展示位置,每小时收费 50 美元,我现在可以针对任意时间段(每周、每月、每天)生成报告并查看额外的帐单那个时间段。

为此,我想使用上面的放置数据在事实表中生成另一组数据,如下所示:

id,
placement_id,
date (date) -- or could be a reference to a date dimension table
amount (float) -- placement.hourly_rate x 8 hours

有没有办法使用 Postgres 来生成这些新行,或者有没有更好的方法来实现我的目标?

【问题讨论】:

    标签: sql postgresql datetime date-arithmetic dimensional-modeling


    【解决方案1】:

    您可以使用generate_series() 和横向连接:

    select p.id, d.date, p.hourly_rate * 8 as amount
    from placements p
    cross join lateral generate_series(start_date, end_date, '1 day') d(date)
    

    【讨论】:

      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多