【问题标题】:PostgreSQL - Getting the sum of the difference in dates from two separate tablesPostgreSQL - 从两个单独的表中获取日期差异的总和
【发布时间】:2022-01-01 15:23:46
【问题描述】:

以下代码:

SELECT ets.event_id, ets.event_date, dtn.don_date, dtn.don_date - ets.event_date AS date_diff FROM events ets, donation dtn
GROUP BY ets.event_id, ets.event_date, dtn.don_date
Order BY ets.event_id;

产生这个结果:

我的目标是获取每个 event_id 的 event_date 和 don_date 之间的平均持续时间,但我似乎不知道如何。

【问题讨论】:

  • 您正在执行交叉连接(不推荐)。 eventsdonation 表中的哪些列应该相同才能知道哪个事件与哪个捐赠相关?

标签: sql postgresql date


【解决方案1】:

avg() 应用于计算并仅按 event_id 分组:

SELECT
  ets.event_id,
  avg(dtn.don_date - ets.event_date) AS avg_date_diff
FROM events ets
CROSS JOIN donation dtn
GROUP BY ets.event_id
ORDER BY ets.event_id

CROSS JOIN 仅在此处使用,因为这是问题中的查询正在执行的操作,但我怀疑这实际上是想要的。

更有可能需要加入。也许是这样的:

SELECT
  ets.event_id,
  avg(dtn.don_date - ets.event_date) AS avg_date_diff
FROM donation dtn
JOIN events ets on ets.donation_id = dtn.id
GROUP BY ets.event_id
ORDER BY ets.event_id

但连接的列名未包含在问题中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2017-03-27
    相关资源
    最近更新 更多