两个表中日期之间的平均时间

时间:2014-01-03 18:14:04

标签: sql postgresql aggregate-functions average

在我们的数据库中,我们有一个coffee_types表和一个shipments表。

coffee_types中的每个咖啡都有roasted_at个日期,每个货件的日期都为shipped_at

我想找到每种咖啡类型的roasted_atshipped_at之间的平均值,这意味着要平均每种咖啡的所有shipped_at - roasted_at日期。

我该怎么做?我管理的最好的就是这个,但它只是得到每次装运的日期差异:

SELECT coffee_types.name
     , date_part('day', age(coffee_types.roasted_at, shipments.shipped_at))
FROM coffee_types, shipments
WHERE coffee_types.id = shipments.coffee_type_id
GROUP BY coffee_types.name, coffee_types.roasted_at, shipments.shipped_at;

1 个答案:

答案 0 :(得分:1)

要获得每个咖啡运输的“年龄”,只需减去生成interval的时间戳 - 或者如果您实际拥有date列(您的秘密),则减法生成一个简单的{{1 }}:

integer

您不需要SELECT c.name, s.shipped_at - c.roasted_at AS time_passed FROM coffee_types c JOIN shipments s ON s.coffee_type_id = c.id GROUP BY c.name; 功能。 Format the interval你喜欢的任何方式。

要获得烘焙和运输之间的平均时间,请仅按age()分组 - 或者,确切地说,name表的任何UNIQUE(组合)列。<登记/> 按您想要计算平均值的列进行分组 - 这是您的基本错误:

coffee_types