Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在查询中使用平均值(PostgreSQL)_Postgresql_Average - Fatal编程技术网

在查询中使用平均值(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;