在查询中使用平均值(PostgreSQL)
我很难从以下模式中查询每个公交公司使用的公交车的平均年限: 公共汽车公司在查询中使用平均值(PostgreSQL),postgresql,average,Postgresql,Average,我很难从以下模式中查询每个公交公司使用的公交车的平均年限: 公共汽车公司 company_id | name 1 NED 2 JIM 半身像 type_id | date_made 1 2006-01-26 2 1999-05-05 3 2000-09-01 路线 在本例中,假设今天是2013年3月18日,NED的平均公交车龄为4246.666=4247天 整个查询是什么样子的?我现在无法测试,但类似
company_id | name
1 NED
2 JIM
半身像
type_id | date_made
1 2006-01-26
2 1999-05-05
3 2000-09-01
路线
在本例中,假设今天是2013年3月18日,NED的平均公交车龄为4246.666=4247天
整个查询是什么样子的?我现在无法测试,但类似于:
-- assuming "date_made" is a pg DATE column
--
SELECT buscompany.name, ROUND(AVG(CURRENT_DATE - date_made))
FROM buscompany
LEFT JOIN route
ON route.bus_company = buscompany.company_id
LEFT JOIN bustype
ON route.bustype = bustype.type_id
GROUP BY 1
应该做你想做的事(tm)。pg中的日期差以天为单位。以下(基于我制作的样本表)给出了以天为单位的平均值
select extract(day from avg(current_date-birthday)) from stuff;
avg给你一个时间间隔,而不是天数,所以我做了摘录
如果您想处理时间间隔而不是天数,那么您可以这样做
select avg(age(birthday)) from stuff;
@半法国人,怎么样?再说一次,现在不能和现场pg比赛。是的,这很有效。你提出了这么简单的问题。我总是把我的问题复杂化,但我还是弄错了。干杯。“生日”必须是你的
资料的时间戳类型
;将其强制为日期类型,您将使用整数而不是间隔。请验证如果列的类型为日期,则第一条语句不需要extract语句。由于age
函数,第二个仍然返回间隔。谢谢你指出那件事。
select avg(age(birthday)) from stuff;