以下代码:
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之间的平均持续时间,但我似乎找不到方法。
发布于 2021-11-23 05:43:31
将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但是连接的列名没有包括在问题中。
https://stackoverflow.com/questions/70075729
复制相似问题